具有固定参数值的路由的别名
Alias for a route with a fixed parameter value
我有这条路线:
Route::get('/MyModel/{id}', 'MyController@show');
方法 show()
接受一个名为 id
的参数,我想为 /MyModel/1
设置一个别名,以便可以从 /MyCustomURL
.
访问它
我已经尝试了一些组合,例如:
Route::get('/MyCustomURL', ['uses' => 'MyController@show', 'id' => 1]);
但我不断收到方法 show()
的 缺少必需参数 错误。
在 Laravel 中是否有一种干净的方法来实现这一点?
在同一个控制器中(在你的情况下 MyController
?)你应该创建一个新方法:
public function showAliased()
{
return $this->show(1);
}
现在您可以像这样定义别名路由:
Route::get('/MyCustomURL', 'MyController@showAliased');
像这样定义你的路线:
您可以使用 "as" 为您的路线指定您需要的任何名称。
Route::get('/MyModel/{id}' , [
'as'=>'Camilo.model.show',
'uses' => 'MyController@show' ,
]) ;
现在如果你想访问这个路由,你可以为它生成url,基于它的名字,像这样:
route('Camilo.model.show', ['id' =>1]) ;
Route::get('MyModel/{id}', 'MyController@show');
不是
Route::get('/MyModel/{id}', 'MyController@show');
祝你好运!
在 Laravel 5.4(或更早)中,您可以在路由文件中使用 defaults
函数。
示例如下:
Route::get('/alias', 'MyController@show')->defaults('id', 1);
在这种情况下,您不需要在控制器中添加其他方法。
我有这条路线:
Route::get('/MyModel/{id}', 'MyController@show');
方法 show()
接受一个名为 id
的参数,我想为 /MyModel/1
设置一个别名,以便可以从 /MyCustomURL
.
我已经尝试了一些组合,例如:
Route::get('/MyCustomURL', ['uses' => 'MyController@show', 'id' => 1]);
但我不断收到方法 show()
的 缺少必需参数 错误。
在 Laravel 中是否有一种干净的方法来实现这一点?
在同一个控制器中(在你的情况下 MyController
?)你应该创建一个新方法:
public function showAliased()
{
return $this->show(1);
}
现在您可以像这样定义别名路由:
Route::get('/MyCustomURL', 'MyController@showAliased');
像这样定义你的路线: 您可以使用 "as" 为您的路线指定您需要的任何名称。
Route::get('/MyModel/{id}' , [
'as'=>'Camilo.model.show',
'uses' => 'MyController@show' ,
]) ;
现在如果你想访问这个路由,你可以为它生成url,基于它的名字,像这样:
route('Camilo.model.show', ['id' =>1]) ;
Route::get('MyModel/{id}', 'MyController@show');
不是
Route::get('/MyModel/{id}', 'MyController@show');
祝你好运!
在 Laravel 5.4(或更早)中,您可以在路由文件中使用 defaults
函数。
示例如下:
Route::get('/alias', 'MyController@show')->defaults('id', 1);
在这种情况下,您不需要在控制器中添加其他方法。