我试图将变量从视图(移动模型)传递到不同的控制器(库存模型),使用chtml:button
与此代码
echo CHtml::button(
'Sell It',
array('submit' => array('inventory/create', array('id'=>$data->id)))
);
现在我如何访问Inventory控制器中的$id
变量,以便我可以使用与传递的移动模型'id'变量相对应的详细信息预填充创建视图。
在您的库存/创建控制器操作之前做检查,像这样:-
if (isset($_REQUEST['id'])) {
$id = $_REQUEST['id'];
$this->render('create',array('model'=>$inventory, 'id'=>$id));
}
else{
$this->render('create',array('model'=>$inventory);
}
如果您试图根据传递的Id预填充值来更新/编辑表单,那么您应该必须通过YII中可用的CRUD选项。这是处理记录更新的好方法,也很容易。有关更多信息,请参阅本主题。
http://www.yiiframework.com/doc/guide/1.1/en/quickstart.first-app在您的库存/创建控制器操作中为$_GET['id']做一个测试,如:
$id = (@$_GET['id']) ? : DEFAULT_VALUE;
$this->render('create',array('model'=>$inventory, 'id'=>$id));
,然后通过传递一个变量数组将数据传递给视图。
(您可能希望更好地过滤输入,这只是一个示例—使用filter_input或其他方法并定义一个默认值和/或一些测试,以确定其为null/invalid)
在你的控制器中你可以通过给你的控制器方法一个参数来获取变量,像这样:
public function actionCreate($id){
$id = isset($id)?$id:NULL; // Or whatever, you can access it like this.
}
您不必使用$_GET,并且yii已经对该值做了一些安全检查。