Yii 1.x 如何在 POST (CActiveForm) 中更改模型名称

Yii 1.x how to change model name in POST (CActiveForm)

它可以在 post/get 中更改型号名称吗?

我有大名字的模型,例如 "VerLargeModelName" 和许多参数。

它不适合 GET(查询字符串限制)。

更新:

我只需要更改从 CActiveForm 生成的输入(将 LongModelName[a] 更改为 short[a])

您可以更改名称。您可以像这样 echo $form->textFieldBlock($model,'name',array('name' => 'x["name"]') 或任何您想要的方式。您还可以创建一个 class(小部件),为您的

class MyActiveForm extends CActiveForm {
    public function hiddenField($model, $attribute, $htmlOptions = array()) {
         if(isset($htmlOptions['shortName'])) {
            $htmlOptions['name'] = $htmlOptions['shortName'] . "[".$attribute."]";
            unset($htmlOptions['shortName']);
        }
        return parent::hiddenField($model, $attribute, $htmlOptions);
    }
}  

您将 CActiveFrom 从小部件更改为 MyActiveForm。然后使用$form->textFieldBlock($model,'name',array('shortName' => 'x')。您还可以将上面的代码更改为始终更改为不带 htmlOptions 的短名称。所以它总是x。但是,在这种情况下,您不能同时拥有两种形式。好处是您不需要将 array('shortName' => 'x') 添加到所有这些,而只需将 CActiveFrom 更改为 MyActiveForm。这样可以节省您的时间,但会降低您的灵活性(您以后可能需要)。

您必须为每个要从 ActiveRecord 使用的输入字段创建一个函数。元素的名称将变为 x['name']

在控制器中,您可以简单地执行 $model->attributes = $_POST['x']