Codeigniter - анонимное правило проверки, независимо от поля - PullRequest
1 голос
/ 17 августа 2011

Я хотел бы создать правило проверки независимо от поля формы.Возможно ли это в Codeigniter?Насколько я мог видеть в документации, метод set_rules хочет имя поля формы в качестве первого параметра.

Несмотря на это, я попытался

$this->form_validation->set_rules('products_count', 'products_count', 'callback_products_count_check');

, и это проверка обратного вызова

function products_count_check()
    {
    $user = $this->user_model->get(array(
        'id' => $this->session->userdata('user_id')
    ));

    if ( ! empty($user))
    {
      $kit = $this->kit_model->get(array('id' => $user->kit_id));
      if ( ! empty($kit)) {
        $products_count = $this->product_model->get(array('user_id' => $user->id, 'count' => TRUE));

        if ($products_count >= $kit->max_products) {
          $this->form_validation->set_message('products_count_check', lang('products.max_products_reached'));
          return FALSE;
        }
      }
        }

    return TRUE;
    }

Функция возвращает false, но сообщение об ошибке не отображается.

Есть идеи?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 17 августа 2011

Я не думаю, что вы вообще хотите использовать проверку формы ...

Звучит как работа для FLASHDATA!

проверить класс сеанса , я бы использовал флэш-данные в этой ситуации по нескольким причинам

  • Вы не проверяете поле формы, для чего и предназначен класс form_validation.
  • Для этого предназначены сообщения Flashdata

чтобы сделать это, в вашем контроллере ...

$this->session->set_flashdata('error','Put your error message here');

затем в представлении создайте общий обработчик ошибок

<?php if ($this->session->flashdata('error')): ?>
    <p class="error"><?php echo $this->session->flashdata('error') ?></p>
<?php endif; ?>
0 голосов
/ 17 августа 2011

Это похоже на то, что вы можете проверить перед обработкой формы, если я что-то упустил. В этом случае я бы обработал эту логику по вашему мнению. Просто получите все необходимые записи о продуктах и ​​комплектах в контроллере и передайте их в представление и используйте условное отображение для отображения соответствующих уведомительных сообщений пользователю в случае возникновения ошибки. Это проще, чем пытаться использовать класс валидации, поскольку он не предназначен для такого использования.

...