ホームページ  >  記事  >  バックエンド開発  >  [中級 Laravel] 12 カスタムブレードディレクティブの書き方

[中級 Laravel] 12 カスタムブレードディレクティブの書き方

WBOY
WBOYオリジナル
2016-06-23 13:06:191042ブラウズ

一般的に使用される Blade 構文

Blade テンプレート ページでは、@section コマンドを使用してコンテンツ ブロックを定義したり、@yield コマンドを使用して指定したブロックのコンテンツを表示したりすることがよくあります。後で説明します。カスタマイズされた Blade コマンドの作成方法。

パーソナライズされた Blade をカスタマイズします

welcome.blade.php ページを変更します:

<!DOCTYPEhtml><html>    <head>        <title>Laravel</title>    </head>    <body>        @hello    </body></html> 

AppServiceProvider.php を変更し、カスタム hello コマンドを追加します:

class AppServiceProvider extends ServiceProvider{  /**   * Bootstrap any application services.   *   * @return void   */  public function boot()  {    // 新增 hello blade    Blade::directive('hello', function(){      return 'hello word';    });  }   /**   * Register any application services.   *   * @return void   */  public function register()  {    //  }} 

最初のページへの訪問の効果は次のとおりです。

AppServiceProvider.php のコードを次のように変更します:

  public function boot()  {    // 新增 hello blade    Blade::directive('hello', function(){//      return 'hello word1';      return '<?= "hello universe"; ?>';    });  } 

アクセス結果は変わりません。これは Laravel のページ キャッシュのせいです。 phpArtisan view:clear を実行してキャッシュをクリアし、再度アクセスすると、効果は次のようになります:

Blade でのパラメータ処理

welcome.blade.php ページを変更します:

<!DOCTYPEhtml><html>    <head>        <title>Laravel</title>    </head>    <body>        @hello('world')    </body></html> 

AppServiceProvider のブート メソッドを変更します。 php は、受信 $ 式パラメータを受け入れます:

  public function boot()  {    // 新增 hello blade    Blade::directive('hello', function($expression){      return "<?= 'hello '. $expression; ?>";    });  } 

この時点で、ホームページへのアクセスの影響は次のとおりです:

実際のアクセス パスは次のとおりです: /storage/framework/ の下のキャッシュ ファイルビュー/。

Blade で渡すオブジェクト

Route.php ページを変更してユーザー変数を渡します:

Route::get('/', function(){  return view('welcome')->with('user', App\User::first());}); 

$user を受け入れるように welcome.blade.php ページを変更します:

<!DOCTYPEhtml><html>    <head>        <title>Laravel</title>    </head>    <body>        @ago($user)    </body></html> 

$ を処理するように AppServiceProvider.php を変更します。ユーザー:

  public function boot()  {    // 新增 hello blade    Blade::directive('ago', function($expression){      dd($expression);    });  } 

現時点で、ホームページへのアクセスの効果は次のとおりです:

Blade の補助機能を使用

オブジェクトを正常に表示する方法。ここでは補助機能を使用します。 :

  public function boot()  {    // 新增 hello blade    Blade::directive('ago', function($expression){      return "<?= with{$expression}->updated_at->diffForHumans(); ?>";     });  } 

アクセス効果は次のとおりです:

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。