如上述主题中所述。
我一直在学习CakePHP 4教程,但我使用的不是文章,而是属性。在我获得授权之前,一切都很顺利。
这个错误似乎是由于属性对象被创建为通用实体,而不是在本例中创建的属性对象,尽管我在这里可能错了。
$property = $this->Properties->newEmptyEntity();
skipAuthorization((运行良好。
下面是一个来自Properties::add((的示例。edit((和delete((的行为方式相同。
public function add()
{
$property = $this->Properties->newEmptyEntity();
$this->Authorization->authorize($property);
...
我还宣布了一项财产政策:
use AppModelEntityProperty;
use AuthorizationIdentityInterface;
/**
* Property policy
*/
class PropertyPolicy
{
/**
* Check if $user can add Property
*
* @param AuthorizationIdentityInterface $user The user.
* @param AppModelEntityProperty $property
* @return bool
*/
public function canAdd(IdentityInterface $user, Property $property)
{
return true; //Chicken and egg; you can't check a property ownership if it's not created yet
}
...
非常感谢您的帮助。
确保在PropertyPolicy的顶部定义了名称空间:
namespace AppPolicy;
use AppModelEntityProperty;
use AuthorizationIdentityInterface;
排除命名空间将导致与您描述的错误相同的错误。