1

ほとんどすべてのページに同じ結果を送信する必要があるため、すべてのコントローラーでviewバインドして返す必要があります。variables

私のサンプルコード

public function index()
{
    $drcategory = DoctorCategory::orderBy('speciality', 'asc')->get();
    $locations = Location::get();

    return view('visitor.index', compact('drcategory','locations'));
}

public function contact()
{
    $drcategory = DoctorCategory::orderBy('speciality', 'asc')->get();
    $locations = Location::get();

    return view('visitor.contact', compact('drcategory','locations'));
}

しかし、ご覧のとおり、同じコードを何度も書く必要があります。一度書いて、必要なときにいつでも関数を含めるにはどうすればよいですか?

コンストラクターを使用することを考えましたが、これを実装する方法がわかりません。

4

4 に答える 4

1

これを実装するにはいくつかの方法があります。

service、 aproviderまたは、あなたが言ったように、内で行くことができますconstructor

これだけでなく、コードのより多くの部分でこれを共有すると思いますcontrollerserviceそのため、コードが短くて焦点が絞られている場合は、静的呼び出しを使用します。

これが特殊なケースであることが絶対に確実な場合は、次のcontrollerことができます。

class YourController 
{

    protected $drcategory;

    public function __construct() 
    {

       $this->drcategory = DoctorCategory::orderBy('speciality', 'asc')->get();

    }

   // Your other functions here

}

最終的には、クエリを Service または Provider の下に配置し、直接そこに置くのではなく、それをコントローラーに渡します。探索する何か余分なことがありますか?:)

于 2018-09-27T09:55:14.693 に答える
0

@Sunil は、View Composer Binding がこれを達成するための最良の方法であると述べました。

于 2018-09-27T11:17:12.707 に答える