Livewire、Laravel - 我可以从 Livewire 组件调用控制器“存储”方法吗?

问题描述 投票:0回答:2

我有一个带有“store”方法的 Laravel 控制器。即商店(请求$请求)。

对于视图,我想嵌入一个 livewire 组件,然后利用 livewire 组件方法中的现有控制器“存储”方法(在幕后)。这可能吗?目前,我遇到了没有 Request 对象的问题,因为我不再从现有的路由/视图(即 POST /orders)进行调用。

public function oms_order()
// this method provides the POST /orders leveraging 
// Controllers\OrderController@store
{
    $this->refId = app('App\Http\Controllers\OrderController')->store($this->jsonOrder);
}

传递给 App\Http\Controllers\OrderController::store() 的参数 1 必须是 Illuminate\Http\Request 的实例,给定 null,在 D:\xampp\htdocs\jade\livewire_hpp pp\Http\Livewire 中调用\Oms.php 第 26 行

我可以从 store 方法中删除“Request $request”,但这会破坏标准的 Laravel POST /orders 路由。

我希望使用现有的 Laravel 应用程序作为后端/API 并添加 livewire 位进行演示。欢迎任何建议。

laravel methods laravel-livewire
2个回答
1
投票

我认为从另一个类调用控制器函数不是最佳实践。如果您想要可重用性,我建议通过使用 store 方法创建一个单独的类来重构代码,该方法仅接受必需的属性并保存记录。 然后你就可以在多个地方使用这个方法了。测试也更容易。 在没有看到你的店铺方法之前很难给出准确的答案。


0
投票

天哪! ,你应该改变你的命名约定,写出函数的全名,如果你写得正确,就不需要写注释了,就一行代码!

创建一个特征或辅助函数来在类之间执行任务,这是最佳实践。控制器是 MVC 逻辑的一部分,因此,如果您经常执行逻辑,则需要进行分离,只需将其在特征中分离,然后在其他类中使用它

© www.soinside.com 2019 - 2024. All rights reserved.