ショートバージョンの代わりにオブジェクトを受け取るです: カスタムディレクティブに実際の$オブジェクトを送信し、ビューでそれを再利用する方法はありますか?Laravelブレードディレクティブは、質問のVAR
詳細:
私はある新しいディレクティブを作成:
@object_actions($object)
この$object
は実際にはオブジェクトであり、それは任意の名前を付けることができます。このディレクティブは、サイト上のどこでも使用できるツールとして構築されたhtmlコードのビューを返します。
私は$post
があるとしましょう。その投稿は$post->like()
です。これは基本的にはモデルであり、現在は$post
と同じように$photo
でもあり、どちらもモデルです。今度は私が写真にいるとしましょう
はそれで、閲覧@object_actions私はそのようなlayouts.objects.actions.blade.php
ビュー簡単に埋め込むことができます。私は
@object_actions($post)
両方ができ、ポストビューで同じ
を再びモデルであるか、メソッドなどのオブジェクトでもかまいません。
単純に@include('layouts.objects.actions')
を使用しても問題ありません。
<span data-liked="<?php echo $object->isLiked() ? 'true' : 'false';?>">
<span class="likes-count">{{$object->likes()->count()}}</span>
</span>
あなたが見ることができるように、それがポストにこの含め、VAR名やオブジェクト名として$object
を見る使用、または任意のビュー:layouts.objects.actions
このhtmlコードを持っているので、しかし、それは、全く実用的ではありません実際の名前は$post
、$photo
、$comment
は決して$object
であり、$object = $post
、$object = $photo
のようなものは面倒です。
私は$object
したがってアクションがメンバ関数へのエラーコールをスロー表示、常に$string
、文字列を返すdd($object)
復帰前のDDで、私はしかし
Blade::directive('object_actions', function ($object) {
// dd($object) -- returns a string and not the model
// Include the view here
});
のようなディレクティブを作成できると思っていました文字列のxxx()。
@object_actions($photo) // returns '$photo
@object_actions($post) // returns '$post'
上
DD私は、元のビューから送られた実際のオブジェクトをしたいです。
実際の$オブジェクトをカスタムディレクティブに送信し、ビューで再利用する方法はありますか?私が見つけた
[あなたはこれを試したことがありますか?](https://laracasts.com/discuss/channels/laravel/blade-directive-passing-an-object-instead -of-a-string-as-parameter?page = 1) – Samsquanch