狠狠撸
Submit Search
痴颈别飞を活用して复雑化と戦う
?
0 likes
?
374 views
K
Kenjiro Kubota
Follow
Laravel LT Night #1
Read less
Read more
1 of 21
Download now
Download to read offline
More Related Content
痴颈别飞を活用して复雑化と戦う
1.
痴颈别飞を活用して复雑化と戦う KenjiroKubota@Laravel LT Night#1 2017/07/26
2.
Profile Kenjiro Kubota istyle.inc ?PHP,?HHVM/Hack,?Go,?Javascript?
3.
View?Blade?で変数を操作?加工?(複雑な)判定をしていませんか Viewに渡すあらゆる変数を一つのメソッドで頑張って準備して渡して ませんか
4.
痴颈别飞や颁辞苍迟谤辞濒濒别谤が复雑になってませんか
5.
顿颈谤别肠迟颈惫别を拡张してみる
6.
Directiveとは、 @if() @endif @foreach() @endforeach bladeでよく使うこれ。実は独自Directiveが作れるんです
7.
class?BladeDirectiveServiceProvider?extends?ServiceProvider { ????public?function?register() ????{ ????????$blade?=?$this‐>app‐>make('view') ????????????‐>getEngineResolver() ????????????‐>resolve('blade') ????????????‐>getCompiler(); ???????????? ????????$blade‐>directive('implode',?function($expression)?{ ????????????list($glue,?$pieces)?= ????????????? explode(',?',?str_replace(['(',?')'],?'',?$expression)); ????????????return?"<?php?echo?implode({$glue},?{$pieces});??>"; ????????}); ????} } 独自のServiceProviderを作成して?config/app.php?に登録
8.
bladeで以下のように使えます @implode('|',?['Hoge','Fuga','Piyo']) html Hoge|Fuga|Piyo これは簡単な例ですが、他にも便利なディレクティブが作れそうですね
9.
https://github.com/kubotak‐is/laravel‐blade‐expansion 拙作のライブラリです。ディレクティブ拡張の参考にどうぞ。 こんなディレクティブ欲しいなどの要望があればIssueください
10.
痴颈别飞::厂丑补谤别を使う
11.
View::Shareとは Viewで利用できるグローバル変数を差し込める機能
12.
class?ViewShareServiceProvider?extends?ServiceProvider { ????public?function?register() ????{ ????????$view?=?$this‐>app‐>make('view'); ????????$view‐>share('test',?['message'?=>?'View?Share']); ????} } 独自のServiceProviderを作成して?config/app.php?に登録 どのテンプレートでも ?{{?$test['message']?}}?で取得できる
13.
ViewFactoeyのインスタンスさえあれば良いのでServiceProviderでの利用に限らず Middlewareから差し込むことも可能 use?IlluminateContractsViewFactory?as?ViewFactory; class?ViewShareMiddleware { ????private?$view; ????public?function?__construct(ViewFactory?$viewFactory) ????{ ????????$this‐>view?=?$viewFactory; ????} ????public?function?handle(Request?$request,?Closure?$next) ????{ ????????$this‐>view‐>share('test',?['message'?=>?'View?Share']); ????????return?$next($request); ????} }
14.
特定の惭颈诲诲濒别飞补谤别を通る搁辞耻迟别の场合にのみ利用できる変数を提供できる
15.
痴颈别飞::颁辞尘辫辞蝉别谤を使う
16.
View::Composerとは Shareとは異なり特定のテンプレートにだけで作用させることが可能 所謂プレゼンターやビューモデルのような振る舞い
17.
class?ViewComposerServiceProvider?extends?ServiceProvider { ????public?function?register() ????{ ????????$view?=?$this‐>app‐>make('view'); ????????$view‐>composer('welcome',?AppHttpViewComposerUserComposer::class); ????} } 独自のServiceProviderを作成して?config/app.php?に登録
18.
?AppHttpViewComposerUserComposer? use?IlluminateViewView; use?IlluminateAuthAuthManager; class?UserComposer { ????private?$auth; ???? ????public?function?__construct(AuthManager?$authManager) ????{ ????????$this‐>auth?=?$authManager‐>guard('web'); ????} ???? ????public?function?compose(View?$view) ????{ ????????$view‐>with([ ????????????'authUser'?=>?$this‐>auth‐>user() ????????]); ????} }
19.
?welcome.blade.php?で ?{{?$userAuth‐>id?}}? こんな感じで利用できる。 ※ 特定のテンプレートがレンダリングされる際にViewComposerが実行される ※
颁辞尘辫辞蝉别谤の他にも痴颈别飞インスタンス生成时に起动する痴颈别飞::颁谤别补迟辞谤もあるよ
20.
まとめ 細かい値の操作などはテンプレートで直接行わずに独自のディレクティブを作ろう そもそもViewに渡す前に適切な整形を行うべきです。 Viewで利用する変数をすべてControllerで生成しないでViewShare,Composerを活用して 分離する 関心を分離 ‐> 単一責務の原則 Laravel
Viewにはこのような便利な機能を標準で持っているのでどんどん活用していこ う!
21.
thanks :?
Download