Laravel如果请求查看(在路线的帮助下)?

时间:2016-10-13 12:43:54

标签: php laravel laravel-5 blade laravel-blade

我在视图上执行请求,因为我想禁用某些部分和某些页面:

@if (\Request::route()->getName() != 'product.show')

这有效,但我的问题是,我可以在我的路线上设置一个额外的参数,使我的脚本更灵活,例如:

我的路线代码是:

Route::get('/product/{slug}', ['uses' => 'ProductController@show', 'NO_SIDEBAR_PARAM' => 'true'], function ($slug) {
    return [$slug];
})->name('product.show');

所以我想在" NO_SIDEBAR_PARAM"上创建if请求。 if设置为" true"或"假"启用或禁用元素。

方法是否正确?

1 个答案:

答案 0 :(得分:0)

我使用middleware来设置我希望在大多数视图中可用的视图变量。它也可能有助于解决您的问题。

class SetViewVariables
{
    /** @var SideBarBuilder */
    private $builder;

    public function __construct(SideBarBuilder $builder)
    {
        $this->builder = $builder;
    }

    public function handle($request, Closure $next)
    {
        if ($request->route()->name() == 'product.show') {
            view()->share('sidebar', '');
        } else {
            view()->share('sidebar', $this->builder->makeSideBar());
        }
    }
}

在此示例中,SideBarBuilder是您自己的类,用于生成侧边栏。我只是喜欢使用Laravels容器来解决这些简单的类。