@jazzus

Зачем нужен двойной return при использовании $this в контроллере Laravel?

Пробую использовать $this-> в контроллерах Laravel. Пока только примерно понимаю зачем они нужны. Типа вместо одной длинной логики в одном методе, можно разделить ее на мелкую, расплодить множество методов (а методы в классах и контроллерах) и затем подключать нужный метод через $this->. Конечно если я все правильно представляю (я новичок:)). Так вот. Делаю переадресацию в /home. В методе index определяю тип юзера и обращаюсь к методу client():

public function index()
    {
        $user = User::where('id', Auth::id())
                          ->firstOrFail();

        $type = $user->type;

        if ($type == 10) {
           return $this->client();
        }
    }


В методе client() переадресация
public function client()
    {
           return redirect('/clients');
    }


И вопрос такой – почему в методе index мне нужно делать return $this->client(); и не работает просто $this->client();? Ведь в методе client() уже есть return с редиректом, но он почему то не работает без return в методе index. Зачем нужен двойной return? Странно, что return в методе client() не запускается при вызове метода. Я просто просматривал ларавелевские файлы и там они просто обращаются к нужному методу через this без всяких returnov
  • Вопрос задан
  • 670 просмотров
Решения вопроса 1
Каждая функция или метод отвечает за свой возврат сама.
function client() - возвращает своё
function index() - возвращает своё
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Dnebl
@Dnebl
return $this->client();
Возвращает то что вернет client т.е вот это:
return redirect('/clients');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы