2

我正在使用 CModel(特别是 Gii)为我的 Yii 应用程序生成表单。我对如何命名name=""表单元素的属性有疑问。它们看起来与我数据库中的表字段一模一样。所以,对于像这样的表:Users. 我得到一个表单元素<input type="text" name="Users[usr_username]" ... />

这会泄露我的表名和字段。我知道我可以将模型名称更改为其他名称以避免显示我的真实表名,但我也想至少更改usr_username为。username甚至删除元素名称属性上的模型名称并name="username"改为拥有。

我非常感谢您的意见。

问候

4

2 回答 2

3

所以你可以使用这样的简单文本字段:

<?php echo CHtml::textField('username'); ?>

然后将它们与控制器中的模型属性映射:

$model->usr_username = $_POST['username'];

但是您将无法执行大量任务:

$model->attributes = $_POST['Users'];
于 2012-04-27T07:40:36.403 回答
0

如果您使用 CActiveForm 小部件来创建表单,在您的情况下我认为这是正确的,因为您已经通过 Gii 生成了模型,您始终可以设置htmlOptions生成表单输入的方法的属性,例如:

$form->textField($model,'attribute_name',array('name'=>'your_custom_name'));

在上述情况下,输入值将可以通过 $_POST['your_custom_name'] 访问,这意味着大量分配将不起作用。

另请注意,如果您不指定输入的 id 属性,它将与 name 属性('your_custom_name')相同。

问候

于 2012-05-10T11:41:58.327 回答