как переопределить контроллер сторонней библиотеки для laravel?
есть библиотека которая находится в корне сайта:
App
config
...
Biblioteka/Http/Controllers/SettingsController.php
контроллер создал нужно просто в него направить чтобы сначала считывалось с моего файла или вообще заменить на мой
namespace App\Http\Controllers;
use Biblioteka/Http/Controllers/SettingsController.php as BibliotekaSettingsController;
class SettingsController extends BibliotekaSettingsController
{
}
Спасибо
Ответы (2 шт):
Само по себе переопределение методов контроллера сторонней библиотеки выглядит сомнительной идеей. Возможно проще реализовать необходимый функционал в методе своего контроллера, чтобы быть уверенном, что ничего не поломается в случае обновления сторонней библиотеки.
Если все же решили так поступить, в принципе одно из решений это унаследоваться от необходимого контроллера, переписать необходимые методы. А затем переписать маршруты в /routes/web.php на использование вашего контроллера.
Получить список доступных маршрутов и обрабатывающих их контроллеров можно командой php artisan route:list
Сталкивался с чем-то похожим в Lumen. Не переопределением контроллера, а переопределение класса вообще. Делал это через composer
"autoload": {
....
"exclude-from-classmap":[
"vendor/vendorname/vendorpackage/src/Namespace/Class.php"
],
"psr-4": {
"App\\": "app/",
"PackageName\\": "app/Overrides/PackageName"
}
},
Как-то так. Не уверен что это лучший способ решения проблемы, но для меня он оказался рабочим на все 100%. Так что, как вариант.
Вот еще ссылка с обсуждением этого способа ссылка на stackoverflow