如何使用auth_tank / codeigniter创建登录/注册表模板?

时间:2014-10-03 10:54:33

标签: codeigniter tankauth

努力弄清楚如何实现这一目标。在CodeIgniter中使用tank_auth时,我想在同一页面上登录/注册表。

我想在我的成员控制器中有这样的东西(它扩展了扩展Auth的My_Controller)。

class Members extends My_Controller (

    public function login()
    {
            //Already loggedin, do nothing
            if ($this->tank_auth->is_logged_in()) {
                    return;
            }
            $this->view_data['login_by_username'] = true;
            $this->view_data['login_by_email'] = false;
            $this->view_data['show_captcha'] = false;

            $this->view_data['login_form'] = $this->load->view('auth/login_form', $this->view_data, TRUE);
            $this->view_data['register_form'] = $this->load->view('auth/register_form', $this->view_data, TRUE);

            $this->v('members/login_register'); //In this view $login_form and $register_form is rendered
    }

}

当我转到该页面(localhost / members / login)时,成员/登录视图按预期显示,但在loginform表单的操作中,它表示:

http://localhost/members/login

因此,当我点击“登录按钮”时,它只是调用成员/登录,这不是我想要的。我希望该操作是auth / login,但我仍然想使用我自己的模板。

我希望你们明白我的意思....请告诉我,我做错了什么/想错了。

UPATE: 在实际模板(members / login_register)中,它看起来像这样:

<div class="column">
<?php echo $login_form;?>
</div>
<div class="column>
<?php echo $register_form;?>
</div>

也许我想要实现的目标是不可能的?

1 个答案:

答案 0 :(得分:1)

主视图


您应该使用主视图作为内容的包装。 这样你就可以轻松传递局部视图(虽然不是必需的) 但它会保持整洁。它还允许更容易控制 管理员/用户仪表板和您的前端。

主控制器


class MY_Controller extends CI_Controller
{
    public $template;

    public function __construct()
    {
        $this->template = "master/template"; //views/master/template
    }
}

要为管理模板更改它(作为灵活性的示例),您只需要更改它 __constructor中的变量

class Admin_Controller extends MY_Controller 
{
    public function __construct()
    {
        $this->template = "master/admin/template"; //views/master/admin/template
    }
}

部分视图


部分视图可以直接在其他视图中使用。 您不需要控制器来调用它们。 这些视图只是存储在缓冲区中 由加载程序类$this->load->view('', '', true)

加载

一种常见的方法是在/ views中创建名为“partials”的文件夹。 您可以在此处保留所有可重复使用的视图(例如表单/小部件)。

视图(/ views / partials / login_form)

<div>
  <?php echo form_open('members/login', array('id'=>'login-form'))
</div>

视图(/ views / partials / signup_form)

<div>
  <?php echo form_open('members/signup', array('id'=>'signup-form'))
</div>

视图(成员/索引)

然后,您可以合并视图

<div class="signup-form">
  <?php echo $this->load->view('partials/signup_form')
</div>

<div class="login-form">
  <?php echo $this->load->view('partials/login_form')
</div>

登录/注册

在您的成员类中,您可以创建一个要显示的方法 注册/登录表单然后创建方法来单独处理它们。

class Members extends MY_Controller
{
    public function index()
    {
        return $this->load->view('members/login_register');
    }

    public function login()
    {
        if(!$this->form_validation->run()){
            return $this->index();
        }

        // form validation passed Ask Tank Auth 
        // to log the user in
        $tank->auth->login();
    }

    public function signup()
    {
        if(!$this->form_validation->run()){
            return $this->index();
        }

        // form validation passed Ask Tank Auth 
        // to register 
        $tank->auth->register();
    }
}