Mam kontroler z kilkoma metodami i muszę dodać specjalną kontrolę autoryzacji na początku każdej metody. Więc pomyślałem, aby umieścić tę kontrolę w konstruktorze jak,Przekierowanie konstruktora Laravel nie działa
class AdminController extends BaseController {
public function __construct() {
$this->isAuthorized();
}
protected $layout = "layouts.main";
private function isAuthorized() {
if (!Session::get('userId')) {
echo "inside check"; // checking for debug purpose
return Redirect::to('login');
}
}
/**
* Admin dashboard view after authentication.
*/
public function getDashboard() {
$this->layout->content = View::make('admin.dashboard');
}
}
To nie działa, to po prostu wypisuje komunikat wewnątrz sesji sprawdzić i załadować stronę deski rozdzielczej zamiast przekierowanie z powrotem do strony logowania.
Próbowałem również coś takiego,
public function getDashboard() {
$this->isAuthorized();
$this->layout->content = View::make('admin.dashboard');
}
Kiedy próbuję wywołać tę metodę z tej dziwnej instrukcji return, to działa
public function getDashboard() {
return $this->isAuthorized();
$this->layout->content = View::make('admin.dashboard');
}
mam ten pomysł z here. Jak to zrobić, używając metody konstruktora. Każda pomoc jest bardzo doceniana.
Dlaczego nie użyć filtra trasy? Właśnie do tego zostali stworzeni. – Joe
Nie można drukować żadnych treści przed wysłaniem nagłówków do przeglądarki (w tym przypadku jest to dyrektywa przekierowania). Usuń 'echo' i prawdopodobnie powinno działać – silkfire
Po prostu echo, aby sprawdzić, czy wchodzi w kontrolę, to nie działa, nawet jeśli usunę echo. –