努力弄清楚如何实现这一目标。在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>
也许我想要实现的目标是不可能的?
答案 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”的文件夹。 您可以在此处保留所有可重复使用的视图(例如表单/小部件)。
<div>
<?php echo form_open('members/login', array('id'=>'login-form'))
</div>
<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();
}
}