#laravel #methods #laravel-livewire
#laravel #методы #laravel-livewire
Вопрос:
У меня есть контроллер Laravel с методом ‘store’. т.е. store (запрос $request).
Для представления я хочу внедрить компонент livewire, а затем использовать существующий метод ‘store’ контроллера (за кулисами) из метода компонента livewire. Возможно ли это? В настоящее время я сталкиваюсь с проблемой отсутствия объекта запроса, поскольку я больше не выполняю вызов из существующего маршрута / просмотра (т. Е. POST / orders).
public function oms_order()
// this method provides the POST /orders leveraging
// ControllersOrderController@store
{
$this->refId = app('AppHttpControllersOrderController')->store($this->jsonOrder);
}
Аргумент 1, переданный в App Http Controllers OrderController::store() должен быть экземпляром IlluminateHttp Request, задан null, вызывается в D:xampphtdocsjadelivewire_hppappHttpLivewireOms.php в строке 26
Я могу удалить ‘Request $ request’ из метода store, но тогда это нарушает стандартный маршрут Laravel POST / orders.
Я надеялся использовать существующее приложение laravel в качестве серверной части / API и добавить бит livewire для демонстрации. Любые советы приветствуются.
Комментарии:
1. попробуйте
store(IlluminateHttpRequest $this->jsonOrder);
2. попробуйте
app(OrderController::class)->store(request(), $this->jsonOrder)
Ответ №1:
Я не думаю, что лучше всего вызывать функцию контроллера из другого класса. Если вам нужна возможность повторного использования, я предлагаю провести рефакторинг кода, создав отдельный класс с методом store, который принимает только требуемые атрибуты и сохраняет запись. Затем вы можете использовать этот метод в нескольких местах. Это также проще тестировать. Трудно дать точный ответ, прежде чем увидеть ваш метод store.