在刀片中存储变量以避免在另一个控制器中重复相同的查询

我在打开页面时传递以下变量:

@if(isset($f_posts))

   @foreach($f_posts as $post)

      <a href="/StuffSpot/posts/{{ $post->id }}"> 

         <h4> {{$post->title}}  </h4>

      </a>

   @endforeach

@endif

在同一页面中,我传递了以下变量,该变量在加载页面并通过表单手动进行搜索后传递。

@if(isset($post_srch))

   @foreach($post_srch as $post_s)

      <a href=""> 

         <h4> {{$post_s->title}}  </h4>

      </a>

      <br>

   @endforeach

@endif

问题是在提交表单时,第 1 点中传递的变量没有加载,因为它没有在搜索表单中使用的第二个控制器中传递。我可以通过在搜索控制器中添加相同的查询并再次传递变量来解决这个问题,但我觉得有一种更有效的方法。我的问题是,在加载页面并在第 1 点传递变量后,我是否可以将此变量保存在刀片中,以便我可以调用它而无需返回控制器并在第二个控制器中再添加一次查询用于传递第 2 点中的变量?


明月笑刀无情
浏览 144回答 1
1回答

互换的青春

一个好方法是使用“查看作曲家”,它允许您全局共享变量。在这种情况下,您需要使用来自服务提供商的“引导”方法。所以,尝试这样的事情:public function boot(){&nbsp; &nbsp; view()->composer(['view1', 'view2', 'view3'], function($view) {&nbsp; &nbsp; &nbsp; &nbsp; $view->with('var_name', Model::all());&nbsp; &nbsp; });}例如,假设您需要在三个不同的视图中显示所有最近的帖子:public function boot(){&nbsp; &nbsp; view()->composer(['partials.header', 'partials.footer', 'partial.summary'],&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; function($view) {&nbsp; &nbsp; &nbsp; &nbsp; $view->with('posts', Post::recent());&nbsp; &nbsp; });}或者你的视图可能在同一个文件夹中:public function boot(){&nbsp; &nbsp; view()->composer('partials.*', function($view) {&nbsp; &nbsp; &nbsp; &nbsp; $view->with('posts', Post::recent());&nbsp; &nbsp; });}这样,您就不必在控制器中传递此查询。
打开App,查看更多内容
随时随地看视频慕课网APP