我检查了codeigniter的文档,但没有关于它的特殊页面或信息。我只想知道它是如何工作的。我有这个代码并且它正在工作!我想知道当没有任何模型或数据库访问时is_unique如何工作。在codeigniter中是否有任何类is_unique使用它来根据表的名称和您给它的字段等信息检索数据? 这就是代码:
视图中的电子邮件输入:
http://www.bennadel.com/blog/2169-where-does-node-js-and-require-look-for-modules.htm
控制器:
echo form_input('email_address', set_value('email_address'), 'placeholder="Email"');
和她的模特:
function create_member()
{
$this->load->library('form_validation');
// field name, error message, validation rules
$this->form_validation->set_rules('email_address', 'Email Address', 'trim|required|valid_email|is_unique[membership.email]');
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[4]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]');
$this->form_validation->set_rules('password2', 'Password Confirmation', 'trim|required|matches[password]');
$this->form_validation->set_error_delimiters('<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a><strong>', '</strong></div>');
if($this->form_validation->run() == FALSE)
{
$this->load->view('pages/signup_form');
}
else
{
$this->load->model('admin/Users_model');
if($query = $this->Users_model->create_member())
{
$this->load->view('pages/signup_successful');
}
else
{
$this->load->view('pages/signup_form');
}
}
}
答案 0 :(得分:3)
您可以在以下位置找到此函数的源代码:system/libraries/Form_validation.php
,它似乎是从系统类调用的唯一实例is_unique
。
代码:
/**
* Is Unique
*
* Check if the input value doesn't already exist
* in the specified database field.
*
* @param string $str
* @param string $field
* @return bool
*/
public function is_unique($str, $field)
{
sscanf($field, '%[^.].%[^.]', $table, $field);
return isset($this->CI->db)
? ($this->CI->db->limit(1)->get_where($table, array($field => $str))->num_rows() === 0)
: FALSE;
}
&#34;函数sscanf()是printf()的输入模拟。 sscanf()从字符串str读取并根据指定的格式对其进行解释,这在sprintf()的文档中有描述。&#34; - PHP Docs
正在运行sscanf()以将数据库与表名分开。
然后该函数检查数据库连接是否存在,选择参数中提供的表,并搜索表以返回该条目是否存在。使用三元运算符(?:),语法为boolean expression ? if true : if false;
希望有所帮助!