Laravel - 모든 기능에서 공개 레이아웃이 필요하지 않습니다
문제
나는 최근에 Laravel과 함께 일하기 시작했습니다.지금까지 위대한 프레임 워크! 그러나 나는 질문이 있습니다.
다음과 같이 레이아웃 템플릿을 사용하고 있습니다.
public $layout = 'layouts.private';
이것은 내 base_controller에 설정됩니다.
public function __construct(){
//Styles
Asset::add('reset', 'css/reset.css');
Asset::add('main', 'css/main.css');
//Scripts
Asset::add('jQuery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js');
//Switch layout template according to the users auth credentials.
if (Auth::check()) {
$this -> layout = 'layouts.private';
} else {
$this -> layout = 'layouts.public';
}
parent::__construct();
}
.
그러나 내 다른 컨트롤러에서 함수에 액세스하려고 할 때 오류 예외가 발생합니다. 이는보기를 호출해서는 안됩니다. 사용자가 로그인 할 때 :
class Login_Controller extends Base_Controller {
public $restful = true;
public function post_index()
{
$user = new User();
$credentials = array('username' => Input::get('email'), 'password' => Input::get('password'));
if (Auth::attempt($credentials))
{
} else {
}
}
.
}
오류가 발생하는 오류는 내가 공개 $ 레이아웃에서 다른 변수의 내용을 설정하지 않는다는 것입니다.그러나이 기능에서보기가 필요하지 않으므로이 함수의 레이아웃을 포함하지 않도록 LARAVEL을 어떻게 알 수 없습니까?
제가 내 자신이 십자가에 왔는지 가장 좋은 해결책 (이것이 나쁜 방법인지 모르겠습니다.) unset($this -> layout);
함수에서 post_index()
...
내 질문을 요약합니다. 뷰가 필요하지 않은 특정 함수에서 public $layout
를 포함하지 않으려는 것은 어떻게 할 수 있습니까?
미리 감사드립니다. Fischer
해결책
뷰를 렌더링하지 않으려는 모든 기능에서 $this->layout = null
를 설정해야합니다.
다른 팁
보기가 필요하지 않은 경우 리디렉션이어야합니다.그 로그인 방법에서 그 밖의 무엇이 일어나고 있습니까?
무엇을 해야하는지 로그인 페이지에 로그인 양식을 보여줍니다.이 페이지는 유효성 검사 및 인증을 수행하는 게시물 로그인 페이지에 게시됩니다.인증 수준에서 일어나는 일에 관계없이 사용자는 다른보기가 표시되는 GET 요청으로 다시 리디렉션해야합니다.이것은 실패했거나 제어판 / 홈 페이지에 다시 로그인 양식이 될 것입니다.
이것은 포스트 / 리디렉션 / 받기 라는 웹 개발 패턴입니다.대부분의 경우에 적용됩니다.나는 당신이 그것을 적용 할 사건을 생각할 수 없다.
이 방법에서는보기가 필요하지 않지만 여전히 해당되어 있어야합니다.
return Redirect::to('wherever');
.
return redirect 또는 laravel이 레이아웃을 응답으로 사용하려고 가정합니다.