Frage

Ich habe erst vor kurzem begonnen, mit Laravel zu arbeiten.Bisher ein toller Rahmen!Allerdings habe ich eine Frage.

Ich verwende eine Layoutvorlage wie diese:public $layout = 'layouts.private';

Dies ist in meinem Base_Controller eingestellt:

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();

}

Allerdings erhalte ich jetzt eine Fehlerausnahme, wenn ich versuche, auf Funktionen in meinen verschiedenen Controllern zuzugreifen, die keine Ansicht aufrufen sollten, d. h.Wenn sich ein Benutzer anmelden möchte:

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 {

    }

}

}

Die Fehlermeldung, die ich erhalte, ist, dass ich den Inhalt der verschiedenen Variablen in meinem öffentlichen $-Layout nicht festgelegt habe.Aber da in dieser Funktion keine Ansicht benötigt wird, wie kann ich Laravel dann anweisen, das Layout nicht in diese Funktion einzuschließen?

Die beste Lösung, an die ich selbst geraten bin (ich weiß nicht, ob das ein schlechter Weg ist?), ist: unset($this -> layout); aus der Funktion post_index()...

Um meine Frage zusammenzufassen:Wie kann ich Laravel anweisen, es nicht aufzunehmen? public $layout in bestimmten Funktionen, wo eine Ansicht nicht benötigt wird?

Vielen Dank im Voraus, Fischer

War es hilfreich?

Lösung

Sie müssen einstellen $this->layout = null für jede Funktion, die Sie nicht rendern möchten.

Andere Tipps

Wenn eine Ansicht nicht benötigt wird, sollte es sich um eine Weiterleitung handeln.Was passiert sonst noch mit Ihrer Anmeldemethode?

Sie sollten lediglich ein Anmeldeformular auf der GET-Anmeldeseite anzeigen.Diese Seite wird auf der POST-Anmeldeseite gepostet, wo Sie die Validierung und Authentifizierung durchführen.Unabhängig davon, was auf der Authentifizierungsebene passiert, sollte der Benutzer dann zu einer GET-Anfrage zurückgeleitet werden, wo eine andere Ansicht angezeigt wird.Dies ist entweder erneut das Anmeldeformular, wenn sie fehlgeschlagen sind, oder ihr Control Panel/Homepage.

Dies ist ein Webentwicklungsmuster namens Posten/Umleiten/Abrufen und sollte in den meisten Fällen angewendet werden.Ich kann mir keinen Fall vorstellen, in dem Sie es anwenden würden.

Bei Ihrer Methode ist keine Ansicht erforderlich, aber Sie sollten dennoch als solche umleiten.

return Redirect::to('wherever');

Denken Sie daran, dass Sie es müssen zurückkehren Die Weiterleitung oder Laravel gehen davon aus, dass Sie Ihr Layout als Antwort verwenden möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top