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