我正在尝试使用
生成活动表单字段<?php $form = ActiveForm::begin(); ?>
...
<?= $form->field($competitor, 't-shirt_size' )->textInput(['maxlength' => true]) ?>
给了我以下错误
Attribute name must contain word characters only.
数据库中的字段名称为t-shirt_size
答案 0 :(得分:0)
由于ActiveRecord模式的工作方式,您会看到此错误。
可以在Yii 2 Guide。
中找到相关说明由于Active Record属性以表列命名,您可能会发现正在编写像
$customer->first_name
这样的PHP代码,如果您的表列被命名,它会使用下划线来分隔属性名称中的单词通过这种方式。如果您担心代码样式的一致性,则应相应地重命名表列(例如,使用camelCase)。
在PHP中,您不能在其名称中创建带有破折号的对象属性,因此尽管在某些数据库引擎中允许,但带有破折号的DB列名称将不可用作ActiveRecord属性。
您必须重命名数据库字段或使用除ActiveForm小部件之外的其他内容来生成表单,但我不确定您是否不会在其他地方遇到有关此属性的异常。