#php #laravel
Вопрос:
Я пытаюсь перенаправить на внешний URL-адрес из вспомогательного класса.
Вот мой контроллер:
<?php
namespace AppHttpControllers;
use AppLead;
use IlluminateHttpRequest;
use App;
use Helper;
class MyController extends Controller
{
public function entities_get() {
Helper::my_function(); // <---- Call my Helper class method to redirect.
return view( 'template' );
}
}
Вот мой вспомогательный класс, используемый в контроллере:
<?php
namespace AppHelpers;
class Helper
{
public static function my_function()
{
return redirect()->away( 'https://www.google.com' ); // <---- Not redirecting.
}
}
Почему функция перенаправления() не работает внутри функции my_function()? Нужно ли мне включать некоторые классы Laravel, используя инструкцию PHP «использовать»?
Ответ №1:
Вы можете добавить send
метод, и он будет работать.
<?php
namespace AppHelpers;
class Helper
{
public static function my_function()
{
return redirect()->away('https://www.google.com')->send();
}
}
Комментарии:
1. Это работает, но зачем мне нужно ставить ->отправить()? Это не обязательно, если я использую перенаправление возврата()->прочь( ‘> google.com’ ) в моем контроллере.
2. Это будет работать без
send
метода, но в этом случае вам нужно вернуть ответ от контроллера, напримерreturn Helper::my_function();
3. @GTSJoe контроллер отправляет* то, что вы возвращаете в нем. помощники не должны отвечать на запросы. Вам следует переместить логику в контроллере, чтобы вы могли разделить ответственность
4. @MichalOravec Нет, он просто сказал, что если я хочу избежать использования функции send (), я могу вместо этого использовать помощник по возврату::my_function ();.
5. Я знаю, я имел в виду, что ему нужно использовать
return
, когда он не используетsend()
.