Yii框架:通过html:button传递变量


Yii framework: passing variable through Chtml:button

我试图将变量从视图(移动模型)传递到不同的控制器(库存模型),使用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已经对该值做了一些安全检查。