如何在 laravel 的一个函数中为同一路线返回多个视图

Posted

技术标签:

【中文标题】如何在 laravel 的一个函数中为同一路线返回多个视图【英文标题】:How to return multiple views in one function in laravel for same route 【发布时间】:2017-09-02 09:41:03 【问题描述】:

很难解释我的问题。我希望你能理解它。

对于我的项目,我有一个主布局,其中包含内容的标题和产量。

master.blade.php

 @include('partials.header')
    <div class="container-fluid main-con">
        @yield('content')
        @include('partials.footer')
    </div>  

现在在主要公共路线上,我正在研究一种方法。

Web.php

Route::get('/', [
    'uses' => 'ProductContoller@getIndex',
    'as' => 'product.mainCats'
]);

ProductContoller.php

class ProductContoller extends Controller


    public function getIndex()
        $ad_cats = Mainaddtype::orderBy('title')->get();
        return view( 'shop.main-categories-page', ['mediacats' => $ad_cats]);
    


现在我的查询是,'main-categories-page' 在 master 的内容部分产生。但我也想在标题中使用相同的 Mainadtype 数据。所以我想在同一个函数上返回标题视图。如果你理解,请帮忙。

我现在正在尝试的是,

 public function getIndex()
        $ad_cats = Mainaddtype::orderBy('title')->get();
        return view( 'shop.main-categories-page', ['mediacats' => $ad_cats]);
        return view( 'partials.header', ['mediacats' => $ad_cats]);
    

但我知道我们不能以这种方式返回。 提前致谢。

【问题讨论】:

【参考方案1】:

函数在获得第一个返回语句时终止,并且在 laravel 中也无法返回两个视图,您唯一可以做的就是在布局模板中包含视图。在模板中添加类别视图的示例。

@if(showStore)
@include('store.category')
@endif

【讨论】:

【参考方案2】:

您也可以访问标题中的变量。只需检查变量是否存在,以便在加载其他视图时不会出错。

@if(!empty($mediacats))
   // do awesome stuffs with $mediacats
@endif

这样,当您在索引页面上时,您的数据将可用。

如果您希望数据在所有视图中都可用,您可以使用laravel view composer。来自官方文档:

View Composer 是回调或类方法,当 视图被渲染。如果您有想要绑定到视图的数据 每次呈现该视图时,视图编辑器都可以帮助您组织 该逻辑到一个位置

希望对你有帮助。

【讨论】:

非常感谢先生!这样可行!!!!!我非常努力地得到这个。非常感谢你:) 很高兴我能帮上忙。

以上是关于如何在 laravel 的一个函数中为同一路线返回多个视图的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 在数据透视表中为克隆字段的一个关系 ID 插入多行

无法在 Laravel 5 中为特定路线添加 CORS

如何在 laravel 查询生成器中为同一列构建多个条件的查询?

如何在 laravel 8 中为 API 返回验证规则和消息作为 JSON

如何在laravel中为api后端返回JSON数据之前定义数据类型

如何在 Laravel 4 中为 Route::group 设置正则表达式参数约束?