Laravel 5.3路由模型绑定多个参数

时间:2016-09-02 09:58:20

标签: laravel-routing laravel-5.3

是否可以使用多个参数进行路径模型绑定?例如

网络路线:

Route::get('{color}/{slug}','Products@page');

因此url www.mysite.com/blue/shoe将被绑定到shoe模型,其color为蓝色。

3 个答案:

答案 0 :(得分:2)

首先,拥有如下路线会更自然:

   <%= simple_form_for @job, :url => company_jobs_path(@company, @job), :method => :post%>
        <%= f.input :title, label: "Title of job" %>
        <%= f.submit 'Create', class: "btn btn-success" %>
    <% end %>

并通过路由绑定解析Route::get('{product}/{color}', 'Products@page'); ,并直接使用控制器方法中的product参数来获取蓝鞋列表。

但是,让我们假设出于某种原因,这是一项要求。我开始时更明确地说明你的路线:

color

然后,在Route::get('{color}/{product}', 'Products@page'); 的{​​{1}}方法中,我会添加以下内容:

boot

RouteServiceProvider.php这里很重要,因为在解析这样的路线模型时,你实际上想要返回一个模型。

这就是为什么我认为它没有多大意义,因为你想要的可能是一个特定颜色的产品列表,而不仅仅是一个。

无论如何,我在寻找实现上述目标的方法时最终得到了这个问题,所以希望它会帮助别人。

答案 1 :(得分:0)

不要忘记声明参数类型:

Route::delete('safedetail/{safeId}/{slug}', [
    'as' => 'safedetail.delete',
    'uses' => 'SafeDetailController@destroy',
])->where([
    'safeId' => '[0-9]+',
    'slug' => '[a-z]+',
]);

答案 2 :(得分:-1)

尝试将控制器更改为:

class Pages extends Controller{

    public function single($lang, App\Page $page){

        dd($page);

    }

}

您必须添加页面模型。