PyroCMS中未输出表单验证错误

时间:2011-08-29 14:39:26

标签: codeigniter validation pyrocms

使用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; ?>

Controller(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 :(得分:0)

事实证明,当我在自定义CodeIgniters语言文件时,我必须搞砸了form_validation_lang.php的上传,因为所有条目都是空的,即$lang['required'] = '';

所以基本上验证器查找错误消息,发现一个空字符串,它被输出修剪掉了。怀疑是愚蠢的事,只是不在我预期的地方。

让我们希望这篇文章可以帮助别人解决问题。