如果每个方法都需要去获取当前的应用信息, 改如何做呢?
背景:
一个用户可以创建多个应用(app), 登陆后, 需要选择一个应用来进行操作。
路由:
路由配置大概是这个样子
Route::get('{appId}/general', 'AppController@index')->name('general');
Route::get('{appId}/config', 'ConfigController@index')->name('config');
...
问题:
如上面的设计, 每个操作中都需要获取当前对应的app。
我现在的做法是在每个方法中调用 getCurrentApp($appId)
的方法去获取应用信息, 我想问的是这么做是否合理, 是否有更好的方法而避免多次重复的调用 getCurrentApp
。
我想到的其他方案但均有些问题:
-
在选择引用的时候就初始化当前的app缓存起来, 直至下次切换, 然后在其他的操作中直接获取前面初始化的app.
问题:
假如改变了appid, 此时仍然能从缓存取到正确的app信息.
-
在 构造函数中去初始化app信息。
问题:在构造函数中获取不到路由参数中的appId。
求支招!
index方法加入参数
index(App $appId, Request $request)
,laravel会自动解析写个中间件,需要的请求全过这个中间件,在中间件中解析出这个 appId 合并到 $request 去。其他方法中直接取用便是。
@qufo 觉得用这样的方法会更简单