我需要在CakePhp 3中对我的实体提供一些帮助。 我们的想法是在初始阶段将一些参数设置为新的权限。也许使用构建器(函数_setPrivateKey())。
我真的不明白我该怎么做。
当我写:
$this->Univer->newEntity();
我想自动设置一个属性:例如,我想直接生成$cleAuthentification
而不在控制器中编写$univer->cleAuthentification = ramdomGenerate();
。但是在权限类中有一个方法。 (我和其他语言一样的建设者)但我怎么能这样做?
这是我的Entitie类:
use Cake\ORM\Entity;
/**
* Univer Entity
*
* @property int $id
* @property int $actif
* @property string $cleAuthentification
* @property string $clePrivee
* @property string $clePublique
* @property \Cake\I18n\Time $dateCreation
* @property \Cake\I18n\Time $dateRelance
* @property \Cake\I18n\Time $dateValidation
* @property \Cake\I18n\Time $dateDernierAppel
* @property string $domaine
* @property string $nom
* @property bool $refreshActif
* @property string $traficMensuelCaptcha
* @property string $traficMensuelSite
* @property int $version
* @property int $categorie_id
* @property int $editeur_id
* @property string $plugin
* @property int $visiteurUniqueMensuel
* @property int $saisieMensuelValide
* @property int $clicMensuel
* @property int $saisieUniqueMensuel
* @property bool $getContent
* @property bool $displayTab
* @property bool $escape
* @property bool $restrictionLDA
* @property int $genre
* @property string $age
* @property float $cpeMin
* @property string $dataComportementale
*
* @property \App\Model\Entity\TechnologyIntegration $technologyIntegration
* @property \App\Model\Entity\Categorie $categorie
* @property \App\Model\Entity\Editeur $editeur
* @property \App\Model\Entity\Theme[] $theme
*/
class Univer extends Entity
{
protected $_accessible = [
'*' => true,
'id' => false
];
}
`
请求帮助!
答案 0 :(得分:0)
一种非常简单明了的方法是在实体中创建一个方法,如下所示:
public function initializeValues() {
$this->foo = "bar";
$this->cleAuthentification = this->randomGenerate();
}
然后执行以下操作:
$entity = $this->Univer->newEntity();
$entity->initializeValues();
或者,如果要在保存实体时执行此操作就足够了,可以将代码放在Table类的beforeSave()
方法中 - 请参阅此处的文档:http://book.cakephp.org/3.0/en/orm/table-objects.html#beforesave: - )