Laravel - 모든 기능에서 공개 레이아웃이 필요하지 않습니다

StackOverflow https://stackoverflow.com//questions/12660201

  •  11-12-2019
  •  | 
  •  

문제

나는 최근에 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이 레이아웃을 응답으로 사용하려고 가정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top