ホームページ > バックエンド開発 > PHPチュートリアル > [中級 Laravel] 12 カスタムブレードディレクティブの書き方

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-23 13:06:19
オリジナル
1075 人が閲覧しました

一般的に使用される 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(); ?>";     });  } 
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート