【问题标题】:Passing parameter to controller from route in laravel将参数从laravel中的路由传递给控制器
【发布时间】:2012-09-20 18:37:50
【问题描述】:

这是 LARAVEL 3 的问题

给定以下路线

Route::get('groups/(:any)', array('as' => 'group', 'uses' => 'groups@show'));

还有我想使用的网址,

http://www.example.com/groups/1

我希望能够在我的控制器中使用(:any) 值。

我的控制器看起来像

class Groups_Controller extends Base_Controller {

    public $restful = true;    

    public function get_show($groupID) {
        return 'I am group id ' . $groupID;
    }  


}

这怎么可能?我尝试了一些事情,包括以下内容

Route::get('groups/(:any)', array('as' => 'group', 'uses' => 'groups@show((:1))'));

但它不起作用。

更新

每当我尝试如上所示传递参数时,我都会收到 404 错误。

感谢您的帮助!

【问题讨论】:

  • 我只是这样做,直到我意识到我传递的参数中有正斜杠,我才知道我做错了什么。
  • @dardub 查看更新。你的第二条评论是什么意思。例子?
  • 我传递了一个看起来像example.com/groups/h39rcqwfc/3cr30ficwfcw==的加密字符串
  • 你展示的第一条路线我觉得很合适。
  • @dardub 第一条路线有效......但我想在控制器/模型中使用1,以便我可以从数据库中获取第 1 组。

标签: php laravel


【解决方案1】:

添加参数不需要任何特殊的东西。就像你拥有它一样。

Route::get('groups/(:any)', array('as' => 'group', 'uses' => 'groups@show'));


class Groups_Controller extends Base_Controller {

    public $restful = true;    

    public function get_show($groupID) {
        return 'I am group id ' . $groupID;
    }  


}

【讨论】:

  • 这是一个荒谬的,这个简单的例子(参数作为参数传递给动作函数)没有包含在文档中。
  • 这是一个开源项目,您可以分叉/编辑文档并添加您认为缺少的内容。 github.com/laravel/docs
  • @dwenaus - 这是真的而且很棒,但它只有在你发现你不知道的东西之后才有效......这不在文档中。大量的谷歌搜索和消除不再有效或最佳实践的旧解决方案。其他迷失的灵魂试图解决这个问题,提出了很多糟糕的建议。
【解决方案2】:

这就是您在 1 行代码中所需要的。

Route::get('/groups/{groupId}', 'GroupsController@getShow');

建议:使用 CamelCase 而不是下划线,尝试并关注PSR-* guidelines

希望对你有帮助。

【讨论】:

  • public function getShow($groupId){ } 成功了。也为了减少错误的可能性使用浏览器
【解决方案3】:

你可以像这样添加它们

  Route::get('company/{name}', 'PublicareaController@companydetails');

【讨论】:

    【解决方案4】:
        $ php artisan route:list
      +--------+--------------------------------+----------------------------+--    -----------------+----------------------------------------------------+---------  ---+
      | Domain | Method                         | URI                        |  Name              | Action                                             |    Middleware |
      +--------+--------------------------------+----------------------------+-------------------+----------------------------------------------------+------------+
      |        | GET|HEAD                       | /                          |                           
      |        | GET                            | campaign/showtakeup/{id}   | showtakeup         | App\Http\Controllers\campaignController@showtakeup | auth       |     |
    

    routes.php

      Route::get('campaign/showtakeup/{id}', ['uses' =>'campaignController@showtakeup'])->name('showtakeup');
    

    campaign.showtakeup.blade.php

     @foreach($campaign as $campaigns)
    
    
       //route parameters; you may pass them as the second argument to the method:
    
       <a href="{{route('showtakeup', ['id' => $campaigns->id])}}">{{ $campaigns->name }}</a>
    
    
    
    
                @endforeach
    

    希望这能解决您的问题。 谢谢

    【讨论】:

      猜你喜欢
      • 2016-05-16
      • 2017-01-12
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多