如何使Policy Auto-Discovery新的Laravel功能与其他文件夹中的模型一起使用? - php

我刚刚将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。