Чтобы вызвать метод контроллера из другого контроллера в Laravel, у вас есть несколько вариантов. Вот некоторые распространенные подходы:
- Внедрение зависимостей: вы можете внедрить экземпляр другого контроллера в текущий контроллер и напрямую вызывать его методы. Этого можно добиться, указав тип другого контроллера в параметрах конструктора или метода.
use App\Http\Controllers\OtherController;
class MyController extends Controller
{
protected $otherController;
public function __construct(OtherController $otherController)
{
$this->otherController = $otherController;
}
public function myMethod()
{
// Call the method of the other controller
$this->otherController->otherMethod();
}
}
- Использование контейнера приложения. Контейнер приложения Laravel можно использовать для разрешения экземпляра другого контроллера и вызова его методов.
use App\Http\Controllers\OtherController;
use Illuminate\Container\Container;
class MyController extends Controller
{
public function myMethod()
{
$otherController = Container::getInstance()->make(OtherController::class);
$otherController->otherMethod();
}
}
- Перенаправление HTTP: если метод, который вы хотите вызвать, связан с маршрутом, вы можете использовать перенаправление, чтобы инициировать выполнение этого маршрута и вызвать нужный метод контроллера.
use Illuminate\Support\Facades\Redirect;
class MyController extends Controller
{
public function myMethod()
{
return Redirect::route('other.route');
}
}
Это несколько способов вызвать метод контроллера из другого контроллера в Laravel. Выберите метод, который лучше всего подходит для вашего конкретного случая использования.