2014-10-03 4 views
0

이를 달성하는 방법을 파악하는 데 어려움을 겪고 있습니다. CodeIgniter에서 tank_auth을 사용할 때 동일한 페이지에 로그인/등록 양식을 원합니다.auth_tank/codeigniter를 사용하여 login/registerform 템플릿을 만드는 방법은 무엇입니까?

내 멤버 컨트롤러 (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 
    } 

} 

나는 회원/로그인-보기가 예상대로 표시되는 페이지 (로컬 호스트/회원/로그인)로 이동하지만, loginform의 형태의 행동이 말할 때 :

http://localhost/members/login 

따라서 "Login-button"을 클릭하면 회원/로그인이 호출되며 원하는 것은 아닙니다. 액션을 인증/로그인으로하고 싶지만 여전히 내 자신의 템플릿을 사용하고 싶습니다.

나는 너희들이 내 뜻을 이해하기를 바란다 .... 내가 잘못하고 있다고 잘못 말하면 나에게 말해줘.

UPATE :

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

어쩌면 내가 달성하고자하는 것은 가능하지 않다 : (회원/login_register)는 다음과 같습니다 실제 템플릿에서 ?

+0

실제 양식보기에서 action 속성에 대해 무엇을 제공 했습니까? – Patrick

+0

@ 패트릭 - 나는 어떤 action 애트리뷰트도 정의하지 않았다. 변수 $ login_form과 $ register_form을 반향했다. 업데이트를 참조하십시오. – bestprogrammerintheworld

답변

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)

일반적인 방법은 내부에 폴더를 만들 수 있습니다에 의해로드 을 때 이러한 뷰는 단지 버퍼에 저장된다/"부분 지문"이라는 전망을 제공합니다. 여기서 다시 사용할 수있는 모든보기 (예 : 양식/위젯)를 유지할 수 있습니다.

지도 뷰 (/ 뷰/파셜/login_form)

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

지도 뷰 (/ 뷰/파셜/signup_form)

<div> 
    <?php echo form_open('members/signup', array('id'=>'signup-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(); 
    } 
}