Php 如何访问传递给Laravel控制器的多个参数值

Php 如何访问传递给Laravel控制器的多个参数值,php,laravel-4,parameter-passing,Php,Laravel 4,Parameter Passing,我试图弄清楚如何访问传递给Laravel控制器的两个(或更多)参数。我知道如何创建路由,并且正确创建了URL,但是我只能访问控制器中传递的第一个参数 路线: Route::get('managers/{id}/{parameter2}', array('as'=>'dosomething', 'uses'=> 'ManagersController@dosomething')); 其中,第一个参数显然是经理的$id,第二个参数将由控制器处理 视图: 其中1很容易作为管理器的$id访

我试图弄清楚如何访问传递给Laravel控制器的两个(或更多)参数。我知道如何创建路由,并且正确创建了URL,但是我只能访问控制器中传递的第一个参数

路线:

Route::get('managers/{id}/{parameter2}', array('as'=>'dosomething', 'uses'=> 'ManagersController@dosomething'));
其中,第一个参数显然是经理的$id,第二个参数将由控制器处理

视图:

其中1很容易作为管理器的$id访问,但是当我尝试使用$parameter2访问第二个参数“2”时,例如使用一个简单的返回:“id=$id和parameter2=$parameter2”语句,我会得到一个“未识别的变量:$parameter2”错误

我做错了什么

是否有更好的方法传递多个参数?我特别要问“更好的方法?”这个问题,因为我想做的是使用第二个参数来更改数据库表中的值,并且使用“get”方法,有人可能会更改URL中的参数值,从而造成损害。我必须使用“post”方法吗?我希望能够使用一个链接,因为它在我的应用程序设计中工作得更好

谢谢


我被要求加入控制器,我很乐意这样做。最初,正如我提到的,只是为了测试,我的控制器是一个简单的返回,用于显示两个传递参数的值。但我希望能够做到这一点,包括函数的实际名称(“update_group”而不是“dosomething”)--

管理员控制器:

public function update_group($id)
{
    DB::table('groups')->where('id','=',$parameter2)->update(array('manager_id'=>$id));
    return Redirect::route('managers.show', array('id'=>$id));
}
如果我用实际值替换$parameter2,那么更新表工作得很好,这样语法就可以了。问题是,Laravel说$parameter2是一个未定义的变量,尽管URL包含$parameter2的值,正如上面所示

由于我想到了这个问题的答案可能涉及到在Manager模型中添加一个函数,下面是当前的

Manager.php

class Manager extends Eloquent {

protected $table = 'managers'; ... (mutator and error functions)

}

在你的路线上一切看起来都很好。查看控制器代码会有所帮助,但很可能控制器的dosomething()方法中没有第二个参数

公共函数dosomething($id,$parameter2){
变量转储($id)。“
”; var_dump($paremter2); }
如果不是这样,您可以尝试从路由的回调中转储它以进一步诊断

Route::get('managers/{id}/{parameter2}', function($id, $parameter2)
{
    var_dump($id).'<br />';
    var_dump($paremter2);
});
Route::get('managers/{id}/{parameter2}',函数($id,$parameter2)
{
变量转储($id)。“
”; var_dump($paremter2); });
根据您的用例,您可以像这样以查询字符串的形式传递它们:但这并不是真正的“最佳方式”,除非您正在做一些事情,比如构建一个不会始终以相同顺序使用相同变量的API

/managers?id=1&paramter2=secondParameter

var_dump(Request::query('id')).'<br />';
var_dump(Request::query('paramter2'));
/managers?id=1¶meter2=secondParameter
变量转储(请求::查询('id'))。
; 变量转储(请求::查询('parameter2');
只需更改

public function update_group($id)


发布你的控制器
dosomething
功能我已经添加了控制器和型号。见上文。谢谢,谢谢。我已将控制器添加到上面的原始问题中。var_dump给出的结果与试图显示参数值的返回结果相同——每次,我都会得到一个“Undefined variable:parameter2”错误。如果尝试使用查询字符串,则会出现相同的错误。路由返回控制器,因此这没有帮助。正如我提到的,URL构造正确,只是我无法访问控制器中的第二个参数。一定有办法做到这一点。您的路由正在传递$parameter2,但您的控制器不接受它。尝试将您的方法声明更改为
公共函数更新组($id,$parameter2)
,这样就可以了。谢谢!当然(我真傻!)我真的很感激。
Route::get('managers/{id}/{parameter2}', function($id, $parameter2)
{
    var_dump($id).'<br />';
    var_dump($paremter2);
});
/managers?id=1&paramter2=secondParameter

var_dump(Request::query('id')).'<br />';
var_dump(Request::query('paramter2'));
public function update_group($id)
public function update_group($id, $parameter2)