Проверка правильности формы Codeigniter всегда ложна - PullRequest
0 голосов
/ 14 сентября 2018

В моем вызове функции контроллера codeigniter $this->form_validation->run(), который всегда возвращает false, и мой validation_errors() не показывает ошибку, вероятно, потому что не получает данные в методе post ...

мой контроллер

class Reminder extends CI_Controller {
public function __construct()
{
    parent::__construct();
    $this->load->model('reminder_model');
    $this->load->helper('form');
    $this->load->library('form_validation');
    $this->load->helper('url');
    $this->load->library('email');
    $this->load->library('session');

    if(!$this->session->auth_ok) {
        redirect('auth/login');        
    }
}

public function index(){
    $data['title'] = 'Reminder';
    $data['section'] = 'reminder';

    $data['reminders'] = $this->reminder_model->getReminders();

    $data['operatori'] = $this->reminder_model->getOperators();

    $this->form_validation->set_rules('selectUser','selectUser', '');

    if($this->form_validation->run() === FALSE) {
        $this->load->view('common/header2', $data);
        $this->load->view('reminder/index', $data);
        $this->load->view('common/footerReminder');

        echo validation_errors();
    }else{
        echo "<pre>";
        print_r($this->input->post());
        die();
    }

}

мой взгляд

<?php echo form_open('reminder/index'); ?>

<div class="form-group">
    <label for="selectUser" style=" width: 30%">Utente: </label>
    <select class="form-control" name="selectUser" id="selectUser" style="width: 30%">
        <?php foreach($operatori as $operatore): ?>
            <option value="<?php echo $operatore['ID']?>" <?php echo $r = ($operatore['ID']==$this->session->auth_user['ID']) ? 'selected' : '' ?>><?php echo $operatore['nome']." ".$operatore['cognome'] ?></option>
        <?php endforeach; ?>
    </select>
</div>


<button type="submit" class="btn btn-primary"><i class="fas fa-search"></i> View</button>

<?php echo form_close(); ?>

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Если вы не устанавливаете правила (что делает использование $this->form_validation->set_rules() довольно бессмысленным), проверка формы завершится неудачей, так как отсутствует обязательный параметр.

Если вам не нужно проверять поле,не устанавливайте правило.

Попробуйте обновить инструкцию set_rules до $this->form_validation->set_rules('selectUser','selectUser', 'required');, чтобы проверить, правильно ли она себя ведет.Вы можете проверить это, заполнив что-то в форме (проверка пройдет) или оставив поле пустым (проверка не удастся)

Помните, если вы не установите хотя бы одно правило проверки для поля, неt создать экземпляр метода set_rules для этого поля

0 голосов
/ 14 сентября 2018

Чтобы получить весь массив $ _POST с помощью встроенных методов CodeIgniters, необходимо установить первый параметр как NULL, а второй параметр - TRUE

Как это:

$this->input->post(NULL, TRUE);

Кроме того, вы не установили никаких правил для проверки.

В CodeIgniter вы устанавливаете правила в третьем параметре метода set_rules в объекте form_validation.

Как это:

$this->form_validation->set_rules($FIELD_NAME, $FIELD_NAME(for error messages), $RULES);

Вы должны заменить первый $FIELD_NAME значением атрибута name в HTML-элементе, который вы хотите проверить.

Вы должны заменить второе $FIELD_NAME именем, которое вы хотели бы использовать для поля при отображении пользователю сообщения об ошибке.

Вы бы заменили $RULES правилами валидации, такими как: 'required|min_length[#]|max_length[#]'

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...