Bonjour,
je suis entrain de créé un systeme de tag pour mon site et j'ai toujours les donnée qui sont tojour vide.
mon Code
<?php
namespace Taxonomy\Model\Behavior;
use Cake\Event\Event;
use Cake\ORM\Behavior;
class TaxonomyBehavior extends Behavior
{
public function initialize(array $config)
{
// assocation
$this->_table->belongsToMany('Terms', [
'foreignKey' => 'ref_id',
'clasName' => 'TermsR',
'joinTable' => 'terms_relationships',
'conditions' => array('TermsR.ref' => "Post")
]);
}
public function beforeSave(Event $event, $data) {
debug($data); die;
}
}
<?php
namespace Taxonomy\Model\Table;
use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class TermsRTable extends Table
{
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('terms_relationships');
$this->setDisplayField('id');
$this->setPrimaryKey('id');
$this->belongsTo('Taxonomy.Terms', [
'className' => 'Taxonomy\Model\Table\TermsTable',
'foreignKey' => 'term_id',
]);
}
public function validationDefault(Validator $validator)
{
$validator
->integer('id')
->allowEmpty('id', 'create');
$validator
->scalar('ref')
->maxLength('ref', 255)
->requirePresence('ref', 'create')
->notEmpty('ref');
return $validator;
}
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->existsIn(['term_id'], 'Terms'));
return $rules;
}
}
<?php
namespace Taxonomy\Model\Table;
use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class TermsTable extends Table
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('terms');
$this->setDisplayField('name');
$this->setPrimaryKey('id');
$this->hasMany('Taxonomy.TermsR', [
'className' => 'Taxonomy\Model\Table\TermsRTable',
'foreignKey' => 'term_id',
'dependent' => true,
]);
}
public function validationDefault(Validator $validator)
{
$validator
->integer('id')
->allowEmpty('id', 'create');
$validator
->scalar('name')
->maxLength('name', 255)
->requirePresence('name', 'create')
->notEmpty('name');
$validator
->scalar('type')
->maxLength('type', 255)
->requirePresence('type', 'create')
->notEmpty('type');
return $validator;
}
}
j'aime bien envoyer les données dans le data
Ce que j'obtiens
'id' => (int) 10,
'name' => 'article de test',
'slug' => 'article',
'content' => '<p>article de test</p>',
'online' => (int) 1,
'image' => '4a44048cfbbd26c295e36177789c74e4.jpg',
'terms' => []
le tableau terms est tojours vide malgré que j'ai bien selectioner les données.
Merci d'avance