Laravel back () или redirect () не работает в чертах - PullRequest
2 голосов
/ 03 февраля 2020

Я использовал Laravel помощников во всех своих чертах, предполагая, что вспомогательные функции работают везде.

Но хотя некоторые функции, такие как abort(), работают, я только что понял, что return redirect() и return back() не работают!

Может кто-нибудь объяснить, почему?

После этого я немного не решаюсь доверять Laravel ... Я имею в виду, что если в следующий раз abort(403) кое-где не работает (потому что я не знаю, какая функция где работает), а кто-то делает то, что им запрещено делать!

Упрощенный пример:

namespace App\Http\Traits;
trait TestTrait{
    public function doBack(){
        return back();
    }

    public function doRedirect(){
        return redirect()->route('test');
    }

    public function doAbort(){
        abort(403);
    }
}


use App\Http\Traits\TestTrait;
class TestController extends Controller{
    use TestTrait;

    public function testingBack(){
        $this->doBack();
    }

    public function testingRedirect(){
        $this->doRedirect();
    }

    public function testingAbort(){
        $this->doAbort();
    }
}

В приведенном выше примере контроллера, метод testingAbort() работает, а testingRedirect() и testingBack() - нет! вместо этого они показывают пустую страницу.

Я предполагаю, что мне нужно выполнить перенаправления в самом контроллере (а не в чертах), но это приведет к дублированию большого количества условного кода в методах контроллера, и Я также не уверен, почему это происходит.

1 Ответ

4 голосов
/ 03 февраля 2020

Когда вы вызываете локальный метод и ожидаете, что контроллер будет действовать, вам нужно будет вернуть его, иначе функция контроллера вернет ноль и не будет действовать при возврате черты.

public function testingBack(){
    return $this->doBack();
}

public function testingRedirect(){
    return $this->doRedirect();
}

public function testingAbort(){
    return $this->doAbort();
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...