2017-04-18 89 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')) –