Ошибка проверки формы не выводится в PyroCMS - PullRequest
0 голосов
/ 29 августа 2011

Использование PyroCMS 1.3.1 Я создал модель, которая в значительной степени является копией-вставкой версии включенной модели контактов, но с несколькими изменениями.Когда все поля введены правильно, все работает как положено.Если поле не заполнено или заполнено неправильно, форма не отправляется - как и ожидалось.

Однако я не могу получить сообщение о проверке формы, которое выводит меня из себя.Я уверен, что только что пропустил что-то очень простое, поэтому, если кто-то может указать на это, я был бы благодарен.

Просмотр файла (form.php) содержит этот

<?php if (validation_errors()): ?>
<div class="error-box">
    <?php echo validation_errors(); ?>
</div>
<?php elseif (isset($messages['error'])): ?>
<div class="error-box">
    <p><?php echo $messages['error']; ?></p>
</div>
<?php endif; ?>

Контроллер(plugin.php) выглядит так

class Plugin_mycustommodule extends Plugin {

private $rules = array(
    array(
        'field' => 'firstname',
        'label' => 'lang:mycustommodule_firstname_label',
        'rules' => 'required|trim|max_length[80]'
    ),
    /* ... snip ... */
    array(
        'field' => 'license',
        'label' => 'lang:mycustommodule_license_label',
        'rules' => 'required'
    )
);

public function __construct()
{
    $this->lang->load('mycustommodule');
}

function form()
{
    $this->load->library('form_validation');
    $this->load->helper('form');

    $this->form_validation->set_rules($this->rules);

    // If the user has provided valid information
    if ($this->form_validation->run())
    {
        /* ... Custom processing here ... */

        // The try to send the email
        if ($this->_send_email())
        {
            $message = $this->attribute('confirmation', lang('mycustommodule_sent_text'));

            // Store this session to limit useage
            $this->session->set_flashdata('success', $message);

            redirect(current_url());
        }
        else
        {
            $message = $this->attribute('error', lang('mycustommodule_error_message'));

            $data['messages']['error'] = $message;
        }
    }

    // Set the values for the form inputs
    foreach ($this->rules as $rule)
    {
        $form_values->{$rule['field']} = set_value($rule['field']);
    }

    $data['form_values']    = $form_values;

    return $this->module_view('mycustommodule', 'form', $data, TRUE);
}

1 Ответ

0 голосов
/ 02 сентября 2011

Получается, что когда я работал над настройкой языковых файлов CodeIgniters, я, должно быть, испортил загрузку form_validation_lang.php, потому что все записи были пустыми, т.е.в сообщении об ошибке обнаружена пустая строка, которая была обрезана от вывода.Как подозревал что-то глупое, просто не в том месте, где я ожидал.

Будем надеяться, что этот пост избавит кого-то еще от неприятностей.

...