2009-12-08 4 views
-2

나는 Kohana를 사용하여 사이트의 관리자 섹션에서 작업하고 있습니다. 관리자보기를 저장하기 위해보기 폴더 내에 "admin"하위 폴더를 만들었습니다.Kohana -보기 폴더 내의 하위 폴더

abstract class Admin_Template_Controller extends Template_Controller 
{ 
    public $template = 'admin/template'; 

    public function __construct() 
     { 
      parent::__construct(); 

      $this->template = View::set_filename($this->template); 
      $this->template->css = 'adminstyles'; 
      $this->template->js = 'html5'; 
     } 
} 

그러나, 나는 CSS 변수가 "관리자 내에서 정의되지 않는다는 오류를 받고 있어요 : 나는 또한 여기에 본, 관리 템플릿 컨트롤러라는 관리 섹션 템플릿 컨트롤러의 수정 된 인스턴스를 사용하고 있습니다/template "파일에 있습니다. 이 시점에서 템플릿 파일은 프런트 엔드를 만들기 위해 성공적으로 사용한 뷰 폴더의 템플릿 파일과 동일하므로 존재하지 않습니다. 또한 중요한 사실은, 프런트 엔드 용 뷰 폴더에서 템플릿 파일을 사용할 때 페이지를 올바르게로드한다는 것입니다.

그러면 하위 폴더에있는 템플릿 파일과 관련이 있다고 생각하게됩니다. 그것은 내가 같은 "views/admin"폴더에서 성공적으로 다른보기 파일을로드하기 때문에 나에게 당황 스럽다. 그 파일에는 어떤 변수도 포함되어 있지 않으므로로드가 필요한 이유 일 수 있습니다.

는 또한 새로운 템플릿 파일을로드하려면

$this->template = View::factory($this->template); 

을 시도했지만, 그것은 뷰가 렌더링하기 전에 호출해야한다는 오류를 반환합니다. 자동 렌더링이 켜져 있기 때문에 발생한다고 생각하지만, 계속 사용하고 싶습니다.

어떤 아이디어라도 도움이 될 것입니다. 분명히, 나는 admin 폴더에서 파일을 옮겨서 이름을 바꿀 수는 있지만 그 일은 내가 무슨 일이 일어나는지를 배우는 데 도움이되지 않을 것입니다.

답변

0

내 질문에 대한 답변을 찾았습니다. 줄 :

$this->template = View::set_filename($this->template); 

을 제거해야합니다. 어쩌면 템플릿을 다시로드하고 변수를 취소 할 수 있습니다. 나는 정확하게 모르겠다. 그러나 필자는 확장하고 있던 템플릿 컨트롤러에 이미 정의 된 템플릿 파일 이름을 변경해야한다고 생각했습니다. 나는 Kohana 공개 토론에 저것을 정확하게 읽었다는 것을 생각했다. 나는 그렇지 않다고 생각한다. 희망적으로 이것은 다른 사람을 돕는다. 당신이 제거

2

이 줄 : set_filename()는 정적 메서드가 아니기 때문에

$this->template = View::set_filename($this->template); 

그것을 파괴되었다; 메소드가 자체를 리턴하기 때문에 뷰의 기존 인스턴스에서 해당 메소드를 호출해야합니다 (메소드 체인에 유용). 그러나, parent :: _ construct()로 호출하는 생성자에서 템플릿보기를 생성하는 Template_Controller 클래스를 확장하기 때문에 처음부터 그렇게 할 필요는 없습니다.

기존 템플릿 개체가 있지만 완전히 새로운 개체를 다시 만들지 않고 연관된보기를 변경하려는 경우에만 set_filename() 메서드를 사용해야합니다.

마지막으로 auto_render 옵션은 컨트롤러가 끝나면 뷰를 렌더링하는 포스트 컨트롤러 후크를 트리거합니다. 컨트롤러 클래스의 모든 메서드 내부에있는 코드에는 아무런 영향을 미치지 않습니다.

0

보기 하위 폴더의 이름은 하위 폴더의보기를 제어하는 ​​컨트롤러의 이름과 정확히 일치해야합니다.