Pregunta

Recién he comenzado a trabajar con Laravel.Gran marco tan lejos!Sin embargo, tengo una pregunta.

Estoy utilizando un diseño de plantilla como esta:public $layout = 'layouts.private';

Esto se establece en mi 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();

}

Sin embargo me da un error de excepción ahora cuando trato de acceder a las funciones de mi distintos controladores, que no debe llamar a cualquier punto de vista, es decir,cuando un usuario de inicio de sesión:

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 {

    }

}

}

El error, es que no me fije en el contenido de las diferentes variables en mi público $de diseño.Pero desde ningún punto de vista es necesario en esta función, ¿cómo puedo decirle a Laravel no incluir el diseño en esta función?

La mejor solución que yo de mi mismo han venido de la cruz (no sé si esta es una mala manera?) es unset($this -> layout); de la función post_index()...

Para resumir mi pregunta:¿cómo puedo decirle a Laravel no incluir public $layout en ciertas funciones, donde un punto de vista no es necesario?

Gracias de antemano, fischer

¿Fue útil?

Solución

Usted necesita para establecer $this->layout = null en cualquier función que no desea mostrar la vista.

Otros consejos

Si no se necesita una vista, debe ser una redirección.¿Qué más está pasando en ese método de inicio de sesión tuyo?

Lo que debería estar haciendo es mostrar un formulario de inicio de sesión en la página de inicio de sesión.Esta página publica a la página de inicio de sesión posterior donde realiza validación y autenticación.Independientemente de lo que suceda al nivel de autenticación, el usuario debe volver a ser redirigirse a una solicitud de obtención de información donde se mostrará otra vista.Este será el formulario de inicio de sesión nuevamente si fallaron o su panel de control / página de inicio.

Este es un patrón de desarrollo web llamado Publicar / redireccionar / obtener y deberíaser aplicado en la mayoría de los casos.No puedo pensar en un caso donde lo aplicaría.

En este método tuyo, no se necesita vista, pero aún debe ser redirigiendo como tal.

return Redirect::to('wherever');

Recuerde que debe retorno la redirecta o Laravel asumirá que desea usar su diseño como la respuesta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top