2017-04-18 133 views
3

我有一个问题,显示我的错误信息来自form_validation上的set_message。请参阅下面我的代码的一部分。Codeigniter显示set_message不工作

这些都是一些部分我的观点:

<div class="uk-margin"> 
    <?php if (form_error('name')){ ?> 
      <span class="reg_error"><?php echo form_error('name'); ?></span> 
    <?php } ?> 

    <div class="uk-form-controls"> 
      <input class="uk-input" id="name" name="name" type="text" placeholder="Full Name"> 
    </div> 
</div> 

这里是我的控制器:

$this->form_validation->set_rules('name', 'Full Name', 'trim|callback_alpha_space'); 
    $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email'); 
    $this->form_validation->set_rules('password', 'Password', 'trim|required'); 

    if ($this->form_validation->run() == FALSE){ 
     $this->load->view('register'); 
    }else{ 
     .... 
    } 

而且我下的一个功能:

function alpha_space($str){ 
    if (!$str){ 
     $this->form_validation->set_message('alpha_space', 'The {field} field is required.'); 
     return FALSE; 
    }else if (!preg_match("/^([-a-z_ ])+$/i",$str)){ 
     $this->form_validation->set_message('alpha_space', 'The {field} field can not contain number or special characters.'); 
     return FALSE; 
    }else{ 
     return TRUE; 
    } 
} 

什么情况是, ,规则正在工作,但不知何故消息没有被显示。感谢您的帮助。谢谢!

+0

您对规则的运行有多肯定?即你如何确定他们这样做?我敢打赌,规则本身并没有被调用(这也意味着它会失败)。 – Narf

+0

原因如果规则不起作用,它应该被重定向到其他页面,但会发生什么规则,因为它重定向到相同的页面(它应该显示所谓的错误信息) –

+0

我没有看到在所显示的代码中重定向,但无论如何 - 如果规则是*声明的,但未调用*,这将导致验证失败 - 将您留在错误页面上,但不显示错误。这并不意味着规则奏效,而是意味着失败。 – Narf

回答

0

在您的alpha_space函数中,检查您的preg_match函数。在REGEX的末尾添加“/”字符,如下所示:'/^([-a-z_ ])+$/i/'

+0

你也可以说echo form_error('name','',''),这样你就不需要检查if(form_error('name')) –