2017-10-21 17 views
0

に引数を渡します数字の2番目の配列、3番目のモデルのEloquent配列。は私が書いたカスタムディレクティブに引数を渡すの問題を抱えているカスタムディレクティブ

私はうまくパラメータを使用しようとすると、私は問題に実行します。

Blade::directive('renderblocks', function ($expression) { 
     list($deviceType, $subBlocksIds, $allBlocks) = explode(', ', $expression); 
     dd($deviceType); 

それは、この印刷さ - だけではなく、変数が保持されていることを実際の文字列のように>「$ DEVICETYPEを」。他のパラメータと同じですが、どのようにカスタムブレードディレクティブにパラメータを渡して内部で使用できますか?

答えて

0

ブレードはすべてphp tagsに変換し、directiveと呼ばれるファイルに置き換えます。 AppServiceProviderの変数の内容を表示しようとしていますが、variableについては何も知らずに文字列としてしか表示されません。

ビューでrenderblocksを呼び出すと、関数から返されたものが置き換えられます。例えば

Blade::directive('renderblocks', function ($expression) { 
    list($deviceType, $subBlocksIds, $allBlocks) = explode(', ', $expression); 
    return "<?php echo {$deviceType} ?>"; 
}); 

<?php echo $deviceType ?>renderblocksの各呼び出しを置き換えます。このファイルに変数$deviceTypeが存在するため、これはエラーを表示せず、文字列として表示されません。しかし、実際の変数ではなく文字列として送信されるため、ServiceProviderファイルの文字列として認識されます。

ServiceProviderに送信されたvariablesで作業でき、laravelはその魔法を実行し、返された結果をビューに送信します。

例:それはServiceProviderに変更されたため、それを文字列として送信されたにもかかわらず、

Blade::directive('addAge', function ($age) { 
    $age= 999; 
    return "<?php echo {$age} ?>"; 
}); 

@addAge(1)を呼び出すと、まだ999を示し

関連する問題