Yii框架:通过Chtml:按钮传递变量

时间:2011-08-11 07:25:05

标签: php yii

我正在尝试将一个变量从(移动模型的)视图传递到另一个控制器(库存模型),使用带有此代码的chtml:button

echo CHtml::button(
    'Sell It', 
    array('submit' => array('inventory/create', array('id'=>$data->id)))
);

现在如何访问Inventory控制器中的$id变量,以便我可以使用与移动模型的传递'id'变量相对应的详细信息预填充创建视图。

4 个答案:

答案 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已对该值进行了一些安全检查。