【发布时间】:2015-02-20 17:46:35
【问题描述】:
我仍然无法理解从 Laravel 4.2 到 5.0 的所有变化。
我已经成功地导入了我所有的模型、控制器、配置等。我已经为几乎所有东西都命名了,但我似乎无法管理的一件事是将此代码从 4.2 app\filters.php 转换为我的新 5.0 应用程序。
这是代码的一部分,下面添加了一些我遇到问题的解释。添加了以下代码,以便我们可以方便地在组内请求当前用户的所有操作/可见字段的权限。
if(App::make('Authflag', $usergroup->id)->can(GroupPermissions::EDIT_MEMBERS)) ...
4.2 的代码:
App::before(function($request) {
App::instance('Authflags', array());
App::bind('Authflag', function($app, $param) {
$authflags = App::make('Authflags');
if(isset($authflags[$param]))
{
return $authflags[$param];
}
// Calculate generate flag value
$authflags[$param] = $authflag;
App::instance('Authflags', $authflags);
return $authflag;
});
});
说明:
实例 Authflags 包含 group_id => permissionObject
代码说明:
- 获取 Authflags 数组实例
- 如果我们已经拥有所需的权限对象,则返回它
- 否则生成/计算/请求权限对象
- 更新 Authflags 实例
- 返回创建的权限对象
但无论我尝试什么,我都会不断收到ReflectionException in Container.php line 776: Class Authflag does not exist.
我尝试创建合同和服务并在AppServiceProvider 中设置绑定。但我很确定我在做一件完全错误/不同的事情。
我尝试在 AppServiceProvder 中进行一些修改后复制此代码。但这似乎是错误的,并没有奏效。
(想想看,整个代码应该都在start/global.php里面)
如何将此代码移植到 Laravel 5.0?
【问题讨论】:
-
你必须使用中间件。
-
中间件是过滤前后的“替代品”
-
感谢您的评论!虽然我不确定,但我认为
before/after过滤器目前无关紧要。就在今天我开始认为我根本不需要它,应该将App::bind和App::instance直接放在global.php中。或者,如果您认为我错了,那么您能否在评论中回答并告诉我应该如何进行?最终我希望能够再次致电App::make('Authflag', $group_id)。但我不知道在 Laravel 5 中的何处或如何进行这些绑定。
标签: laravel laravel-4 laravel-5