Я пытаюсь сделать вещи проще в моем приложении Laravel. Поэтому мне интересно, как можно НЕ перенаправлять клиента, если одна из моих функций возвращает true, и как перенаправить, если это строка (не правда).
Допустим, у меня есть такая функция:
public function returnText() {
$r = rand(1,100);
if ($r > 50)
{
$redir = true;
}
else
{
$redir = 'http://google.com';
}
return $redir;
}
Что я хочу в функции контроллера моего Laravel — это перенаправить пользователя, если результатом является URL, и не перенаправлять, если это просто «true» (или что-то в принципе не имеет значения, возвращаю ли я true или что-то еще).
Теперь я, очевидно, могу сделать это с несколькими строками, но я бы хотел оптимизировать его, чтобы он занимал 1 максимум 2 строки.
public function redi() {
return redirect(CustomFunction::returnText());
}
Я пробовал этот подход, но он, очевидно, выдает некоторую ошибку, потому что он не может понять «истина».
Любые идеи о том, как добиться этого с наименьшим количеством строк кода?
P.S .: используя Laravel 5.5
redirect()
Функция требует URI для перенаправления и true
недопустимое логическое значение, следовательно, ошибка.
Итак, вы можете сделать что-то подобное в своей функции:
public function redi() {
$redirectUrl = CustomFunction::returnText();
if (!is_bool($redirectUrl)) {
return redirect($redirectUrl);
}
return;
}
т.е. только перенаправление, если оно дает вам что-либо кроме логического значения.
Других решений пока нет …