文本形式的信息总是来自网站上的表单域,即使我在模型中指定
public function rules() {
return [
[['field'], 'integer'],
];
}
仅当您这样做时才会发生类型转换:
public function behaviors() {
'typecast' => [
'class' => AttributeTypecastBehavior::className(),
'attributeTypes' => [
'field' => AttributeTypecastBehavior::TYPE_INTEGER,
],
'typecastAfterValidate' => true,
'typecastBeforeSave' => false,
'typecastAfterFind' => false,
}
这是应该的还是我做错了什么?按照我的逻辑,通过在规则中指定类型,系统应该将字段转换为INTEGER类型,并保存在数据库中,但是不,它保存为文本!
http://php.net/manual/ru/language.types.type-juggling.php
在 Yii2 中,使用过滤器将类型转换为验证规则中的类型是合乎逻辑的:
然后在检查数字之前进行验证时,您的值将减少为 int。