How to pass default values to controller by routing in Laravel 5?

老子叫甜甜 提交于 2019-12-24 05:37:09

问题


In laravel, if I want to pass parameters to a controller in my route file

Route::get('user/sk/{id}'  , 'UsersController@findsk');

If I want to pass default parameters:

Route::get('user/{name?}', function ($name = 'John') {

     // how do I invoke my controller here?

     return $name;

});

How do I merge the two things? Is there a shortcut?

Route::get('user/sk/{id}'  , 'UsersController@findsk'

   // can I add an array of default parameters here?

);

回答1:


As far as I know, there is no shortcut, unfortunately.

To inject one optional parameter:

Route::get('user/{name?}', function ($name = 'John') {
    $ctrl = new \App\Http\Controllers\UsersController();
    return $ctrl->findsk($name);
});

To inject one optional parameter with more parameters:
Assuming you had an $id param and that UsersController@findsk accepts $id and $name.

Route::get('user/{id}/{name?}', function ($id, $name = 'John') {
    $ctrl = new \App\Http\Controllers\UsersController();
    return $ctrl->findsk($id, $name);
});

To inject something in the controller from the router:
Assuming want to use a url as a switch.

Route::get('my-special-url', function () {
    $ctrl = new \App\Http\Controllers\UsersController();
    return $ctrl->findsk(1, 'Paul');
});



回答2:


You can pass as a default parameter to function in your controller like just normal function

Route::get('user/sk/{id}'  , 'UsersController@findsk');

in UsersController

function findsk($id ='myVal'){

}


来源:https://stackoverflow.com/questions/31871910/how-to-pass-default-values-to-controller-by-routing-in-laravel-5

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!