如何在Laravel控制器中实现特定于区域的应用程序



我正在使用Laravel 6。

我正在构建一个包含文件(而不是存储在桌面或存储上的文件(的应用程序。我有一个文件模型、文件控制器控制器和DB中的文件,其中包含id, user_id(因为它属于用户(和数据(这是一个 JSON 列(。

对于我的应用,文件可以具有基于管辖区的不同字段,需要捕获这些字段(通过边栏选项卡模板上的窗体(并通过控制器进行管理(主要通过显示、编辑、更新(。

我可能有许多司法管辖区(想象国家、州和城市(版本的文件,它们各自的字段需要捕获、显示、修改等。

在许多这些文件中,特别是如果它在同一国家/地区,则存在重复的字段(列/键(。

目前,我有一个控制器,在编辑文件、显示文件或更新文件时,我开始拥有检测国家/地区或州并修改逻辑或视图的逻辑。

最初我以为我会做这样的事情

File - model
FileController - root controller
- @edit calls FileControllers/country/state/FileController@edit.php
- @show calls FileControllers/country/state/FileController@show.php
- @update will reference FileControllers/country/state/FileController@update
Files.view.blade - root view for Show
Files.edit.blade - root view for Edit

但我有一种感觉,这将很快失控,特别是如果某些文件记录具有我将捕获的类似字段、视图、数据类型。没有任何跨不同司法管辖区的司法管辖区,这就是我在 mysql 数据库中选择 JSON 存储的原因。

从长远来看,有哪些方法可以动态管理此类设置,并且相对易于维护?我是一个初学者到新手的开发人员。

我决定将我的项目向前推进到设置特定于区域的控制器和视图,并使用 Web.php 来处理路由,例如

所以我会运行:

php artisan make:controller /us/ny/FileController
Route::get(‘file/edit,’$country.’/‘.$state.’/FileController@edit’);

使用一些代码来检测这些是否存在。

我仍然乐于接受反馈和建议,因为我很乐意用更好的方法来管理它,尤其是任何可重用的部分。

我想记录另一个答案,以防另一个开发人员沿着这条路走下去并寻找答案。

不确定这是否是最好的方法,但我决定从根控制器中调用该方法。

所以

Route::patch('/file','FileController@update');

在文件控制器中,update(( 方法具有

app()->call('AppHttpControllers\'.$country.'FileController@Update')

我读过这不是最好的方法,但没有找到具体的替代方案。

最新更新