为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
明月笑刀无情 2021-12-03 10:40:59
我在打开页面时传递以下变量:@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 点中的变量?
查看完整描述

1 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

一个好方法是使用“查看作曲家”,它允许您全局共享变量。在这种情况下,您需要使用来自服务提供商的“引导”方法。所以,尝试这样的事情:


public function boot()

{

    view()->composer(['view1', 'view2', 'view3'], function($view) {

        $view->with('var_name', Model::all());

    });

}

例如,假设您需要在三个不同的视图中显示所有最近的帖子:


public function boot()

{

    view()->composer(['partials.header', 'partials.footer', 'partial.summary'], 

        function($view) {

        $view->with('posts', Post::recent());

    });

}

或者你的视图可能在同一个文件夹中:


public function boot()

{

    view()->composer('partials.*', function($view) {

        $view->with('posts', Post::recent());

    });

}

这样,您就不必在控制器中传递此查询。


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信