Bonjour,

j'ai un problème avec cakephp 3, du coté des bahavior.
Je vais essayer de d'écrire au mieux le problème.

Situation :
je veux créer un behavior qui va permettre à mes entity (ou controller) de rassembler les champs en commun.
Mon behavior s'appelle 'SeoBehavior', il a va ajouter des les champs 'slug, title, description et keywords'.

J'ai pour le moment deux controllers 'Articles' et 'Projets'.
J'ai associé à ces deux controller le behavior de cette maniére :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
        $this->addBehavior('Seo', []);
Dans les Template 'edit' de mes deux controllers j'ai ajouté dans le formulaire les champs qui sont associé à mon behavior.
Comme ci-dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
echo $this->Form->input('seo.slug', [
			'label' => [
			'class' => '',
			'text' => 'L url '
		]
		]);
 
		echo $this->Form->input('seo.title', [
			'label' => [
			'class' => '',
			'text' => 'Le title de la page '
		]
		]);
 
		echo $this->Form->input('seo.description', [
			'rows' => '2',
			'label' => [
				'class' => '',
				'text' => 'La méta description de la page'
			]
		]);
		echo '<p>Elle doit être différente de la description</p>';
 
		echo $this->Form->input('seo.keywords', [
			'label' => [
			'class' => '',
			'text' => 'Les mots cles'
		]
		]);
Jusque là ça ce passe bien pour mes deux controllers 'Articles' et 'Projets'.

Le problème vient maintenant.
Je veux capter c'est champs quand le formulaire est validé.
Dans le behavior "SeoBehavior" j'ai cette fonction "beforeSave"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
public function beforeSave(Event $event, Entity $entity)
{
	$config = $this->config(); //on récupere la cfg de bahavior
       debug($entity->seo);
 
exit();
//return true;
Quand j'enregistre un 'Projet' c'est bon dans la fonction beforesave du behavior j'ai bien un object et je peux manipuler l'entity comme je le veux.

Par contre quand j'enregistre un 'Article' le debug retourne un simple tableau et du coup je ne peux pas manipuler l'entity .

Résultat du débug pour 'Article' dans ce cas ce n'est pas bon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
 /src/Model/Behavior/SeoBehavior.php (line 135)
 
[
	'slug' => 'ddddd',
	'description' => 'ddddd',
	'keywords' => 'ddd'
]

Résultat du débug pour 'Projet' (dans ce cas c'est bon):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
 /src/Model/Behavior/SeoBehavior.php (line 135)
 
object(Cake\ORM\Entity) {
 
	'new' => true,
	'accessible' => [
		'*' => true
	],
	'properties' => [
		'slug' => 'zezzz cent pr cent',
		'title' => '',
		'description' => '',
		'keywords' => ''
	],
	'dirty' => [
		'slug' => true,
		'title' => true,
		'description' => true,
		'keywords' => true
	],
	'original' => [],
	'virtual' => [],
	'errors' => [],
	'repository' => 'Seos'
 
}
Posez vos questions car je ne suis peut être pas assez clair ou ca manque d'information essentielle.
Ps : cakephp 3