【发布时间】:2014-07-27 22:26:39
【问题描述】:
我试图弄清楚如何访问传递给 Laravel 控制器的两个(或更多)参数。我知道如何创建路由,并且正确创建了 URL,但是我只能访问控制器中第一个传递的参数。
路线:
Route::get('managers/{id}/{parameter2}', array('as'=>'dosomething', 'uses'=> 'ManagersController@dosomething'));
其中第一个参数显然是管理器的$id,第二个参数是由控制器处理的。
查看:
<a href="{{ URL::route('do something',array($manager->id,'parameter2') }}" class="styleClass">Do Something</a>
生成 URL:
http://domain/managers/1/2
其中 1 很容易作为经理的 $id 访问,但是当我尝试使用 $parameter2 访问第二个参数“2”时,例如使用简单的 return: "id=$id and parameter2=$parameter2" 语句,我得到一个 "unidentified variable: $parameter2" 错误。
我做错了什么?
有没有更好的方法来传递多个参数?我特别问“更好的方法?”问题是因为我想做的是使用第二个参数来更改数据库表中的值,并使用“get”方法,有人可能会更改 URL 中的参数值,从而导致恶作剧。我必须使用“发布”方法吗?我希望能够使用链接,因为它在我的应用程序设计中效果更好。
谢谢!
我被要求包含控制器,我很乐意这样做。最初,只是为了测试,正如我提到的,我的控制器是一个简单的返回来显示两个传递参数的值。但这是我想要做的,包括函数的实际名称(“update_group”而不是“dosomething”)--
ManagersController:
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函数 -
我已经添加了控制器和模型。看上面。谢谢。
标签: php laravel-4 parameter-passing