CodeIgniter - 唯一值 - 错误显示

时间:2014-01-16 07:29:18

标签: php codeigniter

我制作了一个简单的表单,一个简报订阅,它有两个输入:emailcity。我在表单验证中使用is_unique,但此错误显示为文本。我需要在警告框或警告中修改此文本显示。需要在设计中修复此错误,请提出建议。

  

user.php控制器

<?php 

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class User extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->helper('form');
        $this->load->helper('url');
        $this->load->library('user_agent');
        $this->load->library('form_validation');
    }

    public function create_user() {
        // field name, error message, validation rules
        $lang = $this->input->post("lang");
        $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|is_unique[users.email]');
        $this->form_validation->set_rules('city', 'City', 'trim|required');
        if ($this->form_validation->run() == FALSE) {
            if ($lang == "en") {
                if ($this->agent->is_mobile()) {
                    $this->load->view('m_english_signup');
                } 
                else 
                {
                    $this->load->view('d_english_signup');
                }
                } //if ($this->agent->is_mobile())
            else 
            {
                if ($this->agent->is_mobile()) {
                    $this->load->view('m_arabic_signup');
                } 
                else 
                {
                    $this->load->view('d_arabic_signup');
                }
            }
        } 
        else 
        {
            $this->load->model('Users_model');
            if ($query = $this->Users_model->create_member()) {
                if ($lang == "en") {
                    if ($this->agent->is_mobile()) {
                        $this->load->view('m_english_thanks');
                    } 
                    else 
                    {
                        $this->load->view('d_english_thanks');
                    }
                } 
                else
                {
                    if ($this->agent->is_mobile()) {
                        $this->load->view('m_arabic_thanks');
                    } 
                    else 
                    {
                        $this->load->view('d_arabic_thanks');
                    }
                }
            }
        }
    }

}

2 个答案:

答案 0 :(得分:3)

我认为Nilesh拥有您需要的最佳解决方案。通过使用javascript,您可以,如果输入的电子邮件已存在,您可以生成警报。或者,您可以使用Bootstrap设置div的样式(假设您的电子邮件输入上方有一个):

<div class="alert" style="display: none"> 
    <a class="close" data-hide="alert" >×</a>  
    <Strong><?php echo form_error('email'); ?></strong>
</div>
<input name="email" value="<?php echo set_value('email'); ?>" />

然后写一些javascript:

$(document).ready(function(){
    $("[data-hide]").on("submit", function(){
        $("." + $(this).attr("data-hide")).hide();
    });
});

我希望这会有所帮助。

答案 1 :(得分:0)

您需要设置自己的错误消息吗?

尝试CodeIgniter用户指南http://ellislab.com/codeigniter%20/user-guide/libraries/form_validation.html#settingerrors