我是Code Igniter的新手。
我希望重新编写我们当前的系统以使用代码点火器。
我目前的问题是。
我正在转移登录表单。 目前,我们有一个页面,它接收ajax请求并验证数据并在提交表单时返回状态。
我应该如何在Code Igniter中解决这个问题? 我的想法是创建一个接收请求的控制器。
但是,
控制器不应吐出任何响应。
那么这是否意味着我应该创建一个视图来吐出几行json?
答案 0 :(得分:1)
不确定。您甚至可以使它成为一个通用视图,可以吐出您想要的任何JSON,然后将对象传递给视图json_encode
d。这样,您可以为处理AJAX请求的其他控制器重用相同的视图。
答案 1 :(得分:1)
Code Igniter有一个输入类和一个表单验证类。它们都有方法有助于处理表单输入:
我会使用登录方法创建一个帐户控制器。 login方法将使用前面提到的类进行表单处理,然后调用模型来执行数据库查询。
我认为拥有一个ajax控制器对你没有多大价值。您可能最终会在所有控制器中使用ajax。如果你想考虑为ajax优化你的控制器,我会将所有“移动部件”拆分成小松散耦合的任务。由于ajax请求不会重新加载整个页面,因此更容易只运行所需的逻辑。
在前端,使用基于模板的布局很有帮助。这样,您发送到输出的唯一内容就是更新部分。 Code Igniter解析器类也有助于模板化。
答案 2 :(得分:0)
以下是您可以如何进行登录的示例。这来自我自己的一个网站。如果你看到我缺少的最佳实践,也会喜欢别人的反馈
查看
if (isset($message)) {echo $message;} //error message
echo form_open('login/validate_credentials', 'class="form-container"');
echo form_input('username', 'Username', 'class="form-field"');
echo form_password('password', 'Password', 'class="form-field"');
echo form_submit('submit', 'Login');
echo anchor('login/signup', 'Need an account? Enroll now!');
echo form_close();
CONTROLLER
function validate_credentials()
{
$this->load->model('usermodel');
$query = $this->usermodel->validateUser();
if($query) // if the user's credentials validated...
{
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true,
'bt_link' => $this->usermodel->getBTlink($this->input->post('username')),
);
$this->session->set_userdata($data); //store in session
$this->load->view('membership'); //logged in
}
else // incorrect username or password
{
$data['message'] = "Invalid credentials";
$data['header_type'] = 'header';
$data['main_content'] = 'login_form';
$this->load->view('template', $data);
}
}
这是一个很棒的CI教程