我刚刚将Laravel更新为5.8,无法使我的策略自动发现工作。
我认为这是因为我所有的模型都在app / Models中。
该文档说,我可以使用此门来更改默认行为。
Gate::guessPolicyNamesUsing(function ($modelClass) {
// return policy class name...
});
但是我不能使它工作。对于我的所有策略和模型,检查函数'''$ user-> can()'''始终返回false。
真的有问题吗?模型文件夹,还是我错过了筹划?
顺便说一句,如果我在AuthServiceProvider.php的$ policies数组中手动映射它,一切都会很好
谢谢!
参考方案
如果有人遇到此问题,这是我的纠正方法。
原来是App/Models
结构是问题所在。 laravel猜测策略名称的神奇之处在于考虑了模型的位置。
要绕过此行为,请将代码放在启动功能的app/Providers/AuthServiceProvider.php
内部。
Gate::guessPolicyNamesUsing(function ($modelClass) {
return 'App\\Policies\\' . class_basename ( $modelClass).'Policy';
});
它将强制查看App/Policies
而不是App/Models/Policies
。 (相应地更改)
然后我意识到应该在App/Models
内部分配“策略”文件夹,因为这是模型所在的位置,但是,嘿,谁知道呢?我想将模型放在不同的文件夹中会使我的生活更加艰难。
再见,希望以后能对您有所帮助。
PHP-将日期插入日期时间字段 - php我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数
Laravel 5错误报告抑制 - php在Laravel 4中,抑制E_NOTICE消息很容易;我似乎无法做到这一点,因为如果我添加error_reporting(E_ALL ^ E_NOTICE) 它只是被覆盖的任何地方。这似乎发生在这里:(index.php)$response = $kernel->handle( $request = Illuminate\Http\Request::…
PHP getallheaders替代 - php我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…
php Singleton类实例将在多个会话中保留吗? - php举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…
更改默认的URL PHP - php如何更改默认网址。例如www.example.com/index.php-> www.example.com现在,我要将其设置为www.example.com/test.php。我应该在php.ini中进行更改吗? 参考方案 假设您正在使用apache,则可以通过DirectoryIndex指令执行此操作。Check out the docs。