0

我使用了很多配置 form_validation 文件。它运作良好!

但现在我正试图让它与子文件夹中的控制器一起使用

/controllers/panel/users.php

我的 form_validation 配置文件看起来像

$config = array(    
'panel/users/edit/' => array(
        array('field' => 'login', 'label' => 'Логин', 'rules' => "trim|required|valid_email")
)

我的用户控制器是

public function edit($user_id = FALSE)
{
    if ($this->input->post('save'))
    {
        $this->load->library('form_validation');

        if ($this->form_validation->run())
        {
           // Do some
        }
    }
}

但是 $this->form_validation->run() 总是返回 FALSE

4

1 回答 1

1

它不是按这种方式设计的,对ruri_string() #122进行了相关更改,可以解决此问题,但它会产生其他影响,需要重新考虑。

您可以显式调用您的验证规则组(从您的规则组名称中删除尾部斜杠)

if ($this->form_validation->run('panel/users/edit'))

或者,如果适合您的情况,可以通过添加uri->segment(1)到自动检测到的规则组来解决此问题。

application/libraries/MY_Form_validation.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Form_validation extends CI_Form_validation {

    function run($group = '')
    {
        // Prepend URI to match subfolder controller validation rules
        $uri = ($group == '') ? $this->CI->uri->segment(1) . $this->CI->uri->ruri_string() : $group;
        return parent::run($uri);
    }

}
于 2014-07-18T10:04:15.993 回答