具有固定参数值的路径的别名

问题描述 投票:4回答:4

我有这条路线:

Route::get('/MyModel/{id}', 'MyController@show');

方法show()接受一个名为id的参数,我想为/MyModel/1设置一个别名,所以它可以从/MyCustomURL访问。

我已经尝试过几种组合,比如:

Route::get('/MyCustomURL', ['uses' => 'MyController@show', 'id' => 1]);

但我不断错过方法show()所需的参数错误。

在Laravel有没有一个干净的方法来实现这一目标?

php laravel laravel-5 laravel-routing
4个回答
7
投票

在Laravel 5.4(或者更早)中,您可以在路线文件中使用defaults函数。

这是一个例子:

Route::get('/alias', 'MyModel@show')->defaults('id', 1);

在这种情况下,您无需在控制器中添加其他方法。


1
投票

在同一个控制器(在你的情况下是MyController?)中你应该创建一个新方法:

public function showAliased()
{
   return $this->show(1);
}

现在您可以像这样定义别名路线:

Route::get('/MyCustomURL', 'MyController@showAliased');

1
投票

像这样定义您的路线:您可以使用“as”为您的路线指定您需要的任何名称。

Route::get('/MyModel/{id}' , [
        'as'=>'Camilo.model.show',
        'uses' => 'MyController@show' ,
    ]) ;

现在,如果你想访问这条路线,你可以根据它的名字为它生成网址,如下所示:

route('Camilo.model.show', ['id' =>1]) ;

-1
投票
Route::get('MyModel/{id}', 'MyController@show');

Route::get('/MyModel/{id}', 'MyController@show');

祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.