Pergunta

Eu só recentemente comecei a trabalhar com o Laravel.Grande quadro tão longe!No entanto, eu tenho uma pergunta.

Eu estou usando um modelo de esquema como este:public $layout = 'layouts.private';

Esta é minha 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();

}

No entanto, recebo um erro de exceção agora quando eu tento acessar funções no meu diferentes controladores, que não deve ser chamada de qualquer ponto de vista, i.é.quando um usuário vai para fazer o login:

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 {

    }

}

}

O erro que eu chegar, é que eu não definir o conteúdo das diferentes variáveis na minha público $layout.Mas já que não é necessária esta função, como posso dizer Laravel não incluem o layout nessa função?

A melhor solução que eu, o meu eu ter vindo de uma cruz (não sei se isso é uma maneira ruim?) é unset($this -> layout); de função post_index()...

Para resumir a minha pergunta:como posso dizer Laravel não incluem public $layout em determinadas funções, onde a vista não é necessário?

Obrigado antecipadamente, fischer

Foi útil?

Solução

Você precisa definir $this->layout = null em qualquer função que você não deseja para compor a vista.

Outras dicas

Se um modo de exibição não é necessário, então, deve ser um redirecionamento.O que mais está acontecendo, em que o método de login de vocês?

O que você deve fazer é mostrar um formulário de login em OBTER página de login.Esta página remete para o POST a página de login, onde você faz a validação e autenticação.Independentemente do que acontece ao nível de autenticação do usuário deve, então, ser redirecionar de volta para uma solicitação GET, onde outro modo de exibição será exibido.Este será o formulário de login novamente se eles falharam ou seu painel de controle/home page.

Este é um web desenvolvimento de padrão de chamado Post/Redirect/Get e deve ser aplicado na maioria dos casos.Eu não posso pensar em um caso onde você deve aplicá-lo.

Neste método de vocês, não é necessário, mas você ainda deve estar redirecionando como tal.

return Redirect::to('wherever');

Lembre-se que você deve retorno a redirecionar ou Laravel irá assumir que você deseja usar em seu layout como resposta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top