【问题标题】:How to pass default values to controller by routing in Laravel 5?如何通过 Laravel 5 中的路由将默认值传递给控制器​​?
【发布时间】:2015-10-30 13:19:09
【问题描述】:

在 laravel 中,如果我想在路由文件中将参数传递给控制器​​

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

如果我想传递默认参数:

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

     // how do I invoke my controller here?

     return $name;

});

如何合并这两个东西?有捷径吗?

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

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

);

【问题讨论】:

    标签: laravel routing


    【解决方案1】:

    你可以作为默认参数传递给你的控制器,就像普通函数一样

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

    UsersController

    function findsk($id ='myVal'){
    
    }
    

    【讨论】:

    • 好的,但是如果我想用一个控制器管理多个 var/default 值怎么办? Route::get('user/sk/{id}' , 'UsersController@find');和 Route::get('user/email/{id}' , 'UsersController@find');如果是电子邮件,我希望它是: function find($what='email', $id ='myVal'); if sk: function find($what='sk', $id ='myVal')
    【解决方案2】:

    不幸的是,据我所知,没有捷径可走。

    注入一个可选参数:

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

    注入一个带有更多参数的可选参数:
    假设您有一个$id 参数并且UsersController@findsk 接受$id$name

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

    从路由器向控制器注入一些东西:
    假设想使用一个 url 作为开关。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-12
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 2014-10-05
      • 2020-04-03
      • 1970-01-01
      相关资源
      最近更新 更多