CodeIgniter最好的方法?

时间:2010-11-17 04:18:49

标签: php ajax codeigniter controller

我是Code Igniter的新手。

我希望重新编写我们当前的系统以使用代码点火器。

我目前的问题是。

我正在转移登录表单。 目前,我们有一个页面,它接收ajax请求并验证数据并在提交表单时返回状态。

我应该如何在Code Igniter中解决这个问题? 我的想法是创建一个接收请求的控制器。

但是,

控制器不应吐出任何响应。

那么这是否意味着我应该创建一个视图来吐出几行json?

3 个答案:

答案 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教程

http://net.tutsplus.com/sessions/codeigniter-from-scratch