codeigniter 3 контроллер / проверка метода из файла конфигурации

Я не новичок в CI, но пробую что-то другое и перемещаю свои проверки с моего контроллера (там много и это становится грязным) в form_validation.phpфайл в /application/configкаталоге.

Метод, который я пытаюсь использовать, — это функция, основанная на контроллере / методе, где она должна автоматически загружать правила, основанные на том, где вы работаете $this->form_validation->run()

Я читал документацию (много раз), и я видел другие сообщения на stackoverflow, и ни один не дал мне решение…

моя текущая настройка приведена ниже…

application / config / form_validation.РНР

//I know the file is being loaded as these work
$config['error_prefix'] = '<span class="text-danger">';
$config['error_suffix'] = '</span>';

/**
 * METHOD SPECIFIC VALIDATIONS
 */

/* Controller:  Account
 * Method:      Register
 */
$config = array(
'account/register' => array(
        'field' => 'company',
        'label' => 'Company',
        'rules' => 'required|is_unique[company.companyName]',
        array(
            'required' => 'You have not provided {field}.',
            'is_unique' => 'This {field} already exists.'
        )
    ),
    array(
        'field' => 'username',
        'label' => 'Username',
        'rules' => 'alpha_numeric|trim|required|is_unique[users.username]',
        array(
            'required' => 'You have not provided {field}.',
            'is_unique' => 'This {field} already exists.'
        )
    ),
    array(
        'field' => 'firstname',
        'label' => 'First Name',
        'rules' => 'required'
    ),
    array(
        'field' => 'lastname',
        'label' => 'Last Name',
        'rules' => 'required'
    ),
    array(
        'field' => 'password',
        'label' => 'Password',
        'rules' => 'required|min_length[6]',
        array(
            'min_length' => '{field} must have at least {param} characters.'
        )
    ),
    array(
        'field' => 'passconf',
        'label' => 'Confirm Password',
        'rules' => 'required|matches[password]'
    ),
    array(
        'field' => 'email',
        'label' => 'Email',
        'rules' => 'trim|required|valid_email|is_unique[users.email]',
        array(
            'required' => 'You have not provided {field}.',
            'is_unique' => 'This {field} already exists.'
        )
    )
);

Контроллер:

class Account extends CI_Controller
{

public function __construct()
{
    parent::__construct();
    $this->load->helper('form');
    $this->load->library('form_validation');
    $this->load->model('account_model');
}

public function register()
{
            //Form not yet submitted, user not logged in, display login page
    if ($this->form_validation->run() == FALSE and $this->session->userdata('loginuser') == FALSE) {

        $this->load->view('templates/header');
        $this->load->view('account/register');
        $this->load->view('templates/loadjs');

    } else {
}

Посмотреть Фрагмент:

<input class="form-control" name="company" placeholder="Company Name" type="text" value="<?php echo set_value('company'); ?>" autofocus />
</div>
<div><?php echo form_error('company'); ?></div>

Идя по документации, которую я связал, вы должны быть в состоянии просто использовать$this->form_validation->run(), и он будет автоматически вызывать эти правила?

2 ответа

  1. Глядя на ваш код снова, я думаю, что вижу несоответствие. Я вижу, что вы загружаете form_validation как библиотеку, однако это должно означать, что есть что-то в папке библиотеки, которую Вы нам не показываете, или, возможно, вы хотели использовать класс config вместо того, чтобы получить доступ к нему, так как он находится в папке config. Если это верно, вы можете посмотреть на класс config .

  2. Для тех, кто играл дома, ответ был в том, что я перезаписывал массив $config своим оригинальным методом. Поскольку файл проверки включен, а не отделен, он назначает, а не добавляет массив $config.

    $config['account/register'] = array(
        array(
            'field' => 'company',
            'label' => 'Company',
            'rules' => 'required|is_unique[company.name]',
            'errors' => array(
                'required' => 'You have not provided {field}.',
                'is_unique' => 'This {field} already exists.'
            )
        ),
        array(
            'field' => 'username',
            'label' => 'Username',
            'rules' => 'alpha_numeric|trim|required|is_unique[users.username]',
            'errors' => array(
                'required' => 'You have not provided {field}.',
                'is_unique' => 'This {field} already exists.'
            )
        ),
        array(
            'field' => 'firstname',
            'label' => 'First Name',
            'rules' => 'required'
        ),
        array(
            'field' => 'lastname',
            'label' => 'Last Name',
            'rules' => 'required'
        ),
        array(
            'field' => 'password',
            'label' => 'Password',
            'rules' => 'required|min_length[5]',
            'errors' => array(
                'min_length' => '{field} must have at least {param} characters.'
            )
        ),
        array(
            'field' => 'passconf',
            'label' => 'Confirm Password',
            'rules' => 'required|matches[password]'
        ),
        array(
            'field' => 'email',
            'label' => 'Email',
            'rules' => 'trim|required|valid_email|is_unique[users.email]',
            'errors' => array(
                'required' => 'You have not provided {field}.',
                'is_unique' => 'This {field} already exists.'
            )
        )
    );