首页 > 解决方案 > CakePHP 4 - 实体默认属性

问题描述

我尝试在 cakephp 的实体类中设置默认值。在文档中,我没有发现任何关于https://book.cakephp.org/4/en/orm/entities.html的信息。我知道我可以在 beforesave 方法CakePHP 3 Entity 默认字段值中设置值,但这为时已晚。

例如:我有一个文章实体类,如果它不是从帖子数据发送的,我不会创建一个文章编号。在验证器中是标记为必填的数字字段。

$validator
            ->scalar('number')
            ->maxLength('number', 100)
            ->requirePresence('number',true)
            ->notEmptyString('number');

现在的问题是,如果我运行该$this->Articles->save()方法,则 beforesave 方法在验证后运行。我也试过这个实体中的构造方法https://api.cakephp.org/4.0/class-Cake.ORM.Entity.html#__construct但是每次出错时都会执行

函数 App\Model\Entity\Article::__construct() 的参数太少,在第 185 行的 /var/www/html/vendor/cakephp/cakephp/src/ORM/Marshaller.php 中传递了 0,而预期为 2

我也知道如果没有设置,我可以在控制器中设置数字,但想在文章实体类中将其设置为默认值。这是许多属性示例之一。我希望任何人都可以解决这个问题。

标签: cakephp

解决方案


推荐阅读