Yii1存储数据报错:无法打开label.php文件,请求协助排查
解决Yii1框架存储数据时
include(label.php)找不到文件的错误 你碰到的这个错误根源出在模型的验证规则写法上,咱们来一步步拆解问题:
先看你模型里的这段rules代码:
array('id', 'label', 'created_at', 'updated_at', 'required'),
这里的写法完全不符合Yii1的验证规则格式——Yii1要求验证规则的结构是array(字段列表, 验证器名称, 可选参数...),你现在把label、created_at这些字段当成了验证器名称,Yii看到'label'会误以为这是一个自定义验证器类,就会尝试去加载label.php文件,自然找不到就报错了。
修正后的验证规则
把所有需要做必填验证的字段放在第一个参数的字符串里,用逗号分隔,正确的rules应该是这样:
public function rules() { return array( array('id, label, created_at, updated_at', 'required'), array('id', 'integer'), array('created_at, updated_at', 'safe'), array('label', 'string', 'max' => 20), ); }
额外的规范建议
你的模型类名是小写的account,但控制器里实例化用的是new Account(),虽然Yii的自动加载可能兼容这种写法,但按照PHP的命名规范,类名应该首字母大写,建议把模型类名改成Account,对应的文件名也改成Account.php,这样能避免一些潜在的自动加载问题。
改完之后再测试保存逻辑,应该就能正常运行了。
内容的提问来源于stack exchange,提问作者test
相关产品推荐
相关产品推荐

