我制作了一个简单的表单,一个简报订阅,它有两个输入:email
和city
。我在表单验证中使用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');
}
}
}
}
}
}
答案 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