具有固定参数值

时间:2016-06-15 02:43:02

标签: php laravel laravel-5 laravel-routing

我有这条路线:

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

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

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

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

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

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

4 个答案:

答案 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');

祝你好运!