在 CI user_guide 之后,我创建了一个名为“form_validation.php”的配置文件,其中包含以下集合:
$config = array(
'user/create' => array(
array(
'field' => 'id',
'label' => '',
'rules' => ''
),
array(
'field' => 'first_name',
'label' => 'lang:First name',
'rules' => 'required|max_length[30]'
),...
),
'user/update' => array(
array(
'field' => 'id',
'label' => '',
'rules' => ''
),
array(
'field' => 'first_name',
'label' => 'lang:First name',
'rules' => 'required|max_length[30]'
),...
)
);
在我的“用户”控制器中,当我调用“创建”方法时,因此使用 URLhttp://localhost/my_ci_application/user/create
时,该语句会$this->form_validation->run()
自动运行我的配置文件中定义的第一组规则。这是我在用户指南中阅读的预期行为。
但是当我运行以下 URLhttp://localhost/my_ci_application/user/update/1
来更新 ID 为 1 的用户时,它不会自动加载“用户/更新”规则集。似乎因为参数的原因,CI 希望找到一个“用户/更新/1”规则集,我当然无法创建,因为我的用户 ID 在调用此方法时会一直变化。
我理解对了吗?如果是,那很遗憾,因为我认为标准 CI URL 的形成如下:控制器/方法/参数......所以我希望表单验证类只考虑前两个 URI 段?!
仅供参考,如果我在 user.update 方法中编写以下内容,我的验证规则可以正常工作:
$this->form_validation->run('user/update')
所以我的问题真的是我是否正确理解了规则的自动加载,以及我们是否可以做任何事情来自动加载这些规则,即使方法具有一些参数。
非常感谢你。