私はlaravelが初めてで、奇妙なビュー拡張メソッドを使用しています。
3 つのビュー ファイルがあるとします。
template.blade.php
form.blade.php
filteredData.blade.php
これらのファイルを次のように整理しました
template は最上位の form.blade が template.blade を拡張しています
そしてfilteredDataはフォームを拡張しています。
ロジックによってフィルタリングされたデータは子ではなく、フォームの兄弟に似ているため、これは機能しますが、私には意味がありません。データがある場合にのみロードされます。
考え方のアドバイスをいただけないでしょうか。
テンプレートはすべてのWebサイトページ用であり、フィルターされたデータを含むフォームがどこにでも必要なわけではないため、テンプレートに直接配置することもできません.
4番目のファイルを作成する必要がありますか?フォームとfilteredDataの2つのブロックを持つFormAndFilter.blade.phpとしましょう? そのため、テンプレートを拡張します。
次に、フォームは FormAndFilter.blade.php を拡張します
また、filteredData は FormAndFilter.blade.php を拡張します
そのため、兄弟のように見えます。
しかし、コントローラー関数でどのように呼び出すのでしょうか?
今(これらの3つのファイルを持っています)私は電話します
$this->layout->content = View::make('filteredData', $this->viewData);
兄弟がいる場合、そのうちの 1 人は呼び出されません。フォームまたはフィルター処理されたデータを呼び出します。わかりません。
ところで
$this->layout->content
@yield('content'); を理解しているとおりに記入します。これはテンプレートにあります。
編集済み
最後に長い苦労の末、兄弟のように見える方法を見つけましたが、4番目のビューを使用しました:
$form = View::make('form');
$filteredData = View::make('filteredData');
$turnover = View::make('turnover')
->with('form', $form)
->with('filtered', $filteredData);
return View::make('layout', array('content' => $turnover));
4 番目のビュー - turnover.blade.php は次のようになります。
turnover
{{ $form }}
{{ $filtered }}
そして、ページに書いたこの男に感謝します:
https://coderwall.com/p/2v7urq
これがlaravelのドキュメントにあればいいのにと思います。