【问题标题】:Yii framework: passing variable through Chtml:buttonYii 框架:通过 Chtml:button 传递变量
【发布时间】:2011-08-11 07:25:04
【问题描述】:

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

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

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

【问题讨论】:

    标签: php yii


    【解决方案1】:

    在您的库存/创建控制器操作中,在获取这样的 id 之前进行检查:-

    if (isset($_REQUEST['id'])) {
    
        $id = $_REQUEST['id'];
    
        $this->render('create',array('model'=>$inventory, 'id'=>$id));
    
    }
    else{
    
        $this->render('create',array('model'=>$inventory);
    
    }
    

    【讨论】:

      【解决方案2】:

      如果您尝试根据传递的 Id 预先填写值的更新/编辑表单,那么您应该通过 YII 中可用的 CRUD 选项。这是处理记录更新及其更新的更好方法也很容易。有关更多信息,请参阅此主题..

      http://www.yiiframework.com/doc/guide/1.1/en/quickstart.first-app

      【讨论】:

      • 不,这不是我想要做的。反正现在使用 $_GET
      【解决方案3】:

      在您的库存/创建控制器操作中,对 $_GET['id'] 进行测试,例如:

      $id = (@$_GET['id']) ? : DEFAULT_VALUE;
      $this->render('create',array('model'=>$inventory, 'id'=>$id));
      

      然后你通过传递一个你想要可用的变量数组将数据传递给视图。

      (您希望更好地过滤输入,这只是一个示例——使用 filter_input 或其他方法并定义默认值和/或对其为空/无效的一些测试)

      【讨论】:

        【解决方案4】:

        在您的控制器中,您可以通过向控制器方法提供参数来获取变量,如下所示:

        public function actionCreate($id){
            $id = isset($id)?$id:NULL; // Or whatever, you can access it like this.
        }
        

        你不必使用 $_GET,yii 已经对 value 做了一些安全检查。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-11-17
          • 1970-01-01
          • 1970-01-01
          • 2018-10-11
          • 2011-10-19
          • 2014-12-25
          • 2015-06-23
          相关资源
          最近更新 更多