Перенаправление Laravel из вспомогательного класса

#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() .