我有这条路线:
Route::get('/MyModel/{id}', 'MyController@show');
方法show()
接受名为id
的参数,我想为/MyModel/1
设置别名,以便/MyCustomURL
可以访问。
我已经尝试过几种组合,例如:
Route::get('/MyCustomURL', ['uses' => 'MyController@show', 'id' => 1]);
但我不断为方法show()
错过必需的参数错误。
Laravel有没有一种干净的方法来实现这一目标?
答案 0 :(得分:6)
在Laravel 5.4(或更早版本)中,您可以在路线文件中使用defaults
功能。
以下是示例:
Route::get('/alias', 'MyModel@show')->defaults('id', 1);
在这种情况下,您无需在控制器中添加其他方法。
答案 1 :(得分:1)
在同一个控制器中(在您的情况下为MyController
?),您应该创建一个新方法:
public function showAliased()
{
return $this->show(1);
}
现在您可以像这样定义别名路线:
Route::get('/MyCustomURL', 'MyController@showAliased');
答案 2 :(得分:1)
像这样定义你的路线: 你可以使用"作为"为您的路线提供您需要的任何名称。
Route::get('/MyModel/{id}' , [
'as'=>'Camilo.model.show',
'uses' => 'MyController@show' ,
]) ;
现在,如果你想访问这条路线,你可以根据它的名字为它生成网址:
route('Camilo.model.show', ['id' =>1]) ;
答案 3 :(得分:-1)
Route::get('MyModel/{id}', 'MyController@show');
不是
Route::get('/MyModel/{id}', 'MyController@show');
祝你好运!