【问题标题】:laravel 5.2 How to get route parameter in blade?laravel 5.2 如何在刀片中获取路由参数?
【发布时间】:2016-12-24 23:56:53
【问题描述】:

这是我的网址 http://project.dev/blogs/image-with-article 所以,这里我需要参数image-with-article 在我的刀片中显示这是一个名为 slug 的参数,这是在我的路由文件中,我需要刀片中的 slug 参数。

Route::get('/blogs/{slug}', ['as'=>'blog.by.slug', 'uses'=> 'CmsController@show']);

【问题讨论】:

    标签: php laravel laravel-5.2 blade laravel-blade


    【解决方案1】:

    我不确定你的意思。如果您尝试在 Blade 模板中构建路由,请使用

    <a href="{{ route('blog.by.slug', ['slug' => 'someslug']) }}">...</a>
    

    如果您尝试访问给定的参数,我建议您从控制器传递它:

    // CmsController
    public function show($slug)
    {
        // other stuff here
        return view('someview', compact('slug'));
    }
    
    // someview.blade.php
    {{ $slug }}
    

    如果你真的需要在不先从控制器发送参数的情况下从视图访问参数......你真的不应该,但你可以使用外观:

    {{ Request::route('slug') }}
    

    【讨论】:

    • 我想为自己寻找如何做到这一点而大声疾呼,结果却发现比我年轻两岁的自己告诉我这是一个愚蠢的想法。
    • 嗨,为什么你的最后一个解决方案是一个不好的做法?我认为这是模板中一个很好的快捷方式,无需占用传递给它的变量数组。
    • @ankabot 我通常希望将任何逻辑保留在视图之外,并将它们需要的任何东西传递给它们。这不是一个严格的规则,这取决于每个人的喜好,但它通常被认为是最佳做法。
    • @JoelHinz 我不会调用 Request::route() 逻辑 - 这对于 Laravel 来说似乎很标准。
    【解决方案2】:

    如果你想在不使用控制器方法的情况下获取参数

    {{dd(request()->route()->parameters)}}
    

    【讨论】:

    • 这不起作用;它返回空。 dd(request()-&gt;query('testing')) 虽然有效。
    【解决方案3】:

    在 Laravel 8 中,你可以简单地使用 request()-&gt;route('parameter_name')

    【讨论】:

      【解决方案4】:

      简单的方法 {{ dd(request()-&gt;query("PARAMNAME")) }}

      获取所有参数 {{ dd(request()-&gt;query()) }}

      【讨论】:

        猜你喜欢
        • 2016-09-13
        • 1970-01-01
        • 2018-11-16
        • 1970-01-01
        • 1970-01-01
        • 2018-10-07
        • 2017-04-04
        • 2021-07-16
        • 2016-09-22
        相关资源
        最近更新 更多