J'utilise un plugin de commentaires à partir de ce link pour ajouter des commentaires sur n'importe quel modèle dans mon application en utilisant le PolymorphicBehavior. Je suis geeting 2 erreurs sur mon application qui ditCakephp erreurs Polymorphic Behavior
Strict (2048): Déclaration de PolymorphicBehavior :: setup() doit être compatible avec ModelBehavior :: setup (Model $ model, $ config = Array) [APP \ Plugin \ Feedback \ Model \ Behavior \ PolymorphicBehavior.php, ligne 93]
Strict (2048): La déclaration de PolymorphicBehavior :: afterFind() doit être compatible avec ModelBehavior :: afterFind (Model $ model, $ results, $ primary) [ APP \ Plugin \ Commentaires \ Modèle \ Comportement \ PolymorphicBehavior.php, ligne 93]
Vous ne savez pas exactement ce qui cause ces erreurs. Si quelqu'un pouvait m'aider, ce serait génial. Voici le code de mon PolymorphicBehavior.php. S'il vous plaît pas de ligne 93 est la dernière ligne dans le code
<?php
App::uses('ModelBehavior', 'Model');
//PolymorphicBehavior class
class PolymorphicBehavior extends ModelBehavior {
//defaultSettings property
protected $_defaultSettings = array(
'modelField' => 'model',
'foreignKey' => 'foreign_key'
);
// setup method
public function setup($Model, $settings = array()) {
if (!isset($this->settings[$Model->alias])) {
$this->settings[$Model->alias] = $this->_defaultSettings;
}
$this->settings[$Model->alias] = array_merge($this->settings[$Model->alias], (array) $settings);
}
//afterFind method
public function afterFind($Model, $results, $primary = false) {
extract($this->settings[$Model->alias]);
if (App::import('Vendor', 'MiCache')) {
$models = MiCache::mi('models');
} else {
$models = App::objects('Model');
}
if ($primary && isset($results[0][$Model->alias][$modelField]) && isset($results[0][$Model->alias][$foreignKey]) && $Model->recursive > 0) {
foreach ($results as $key => $result) {
$associated = array();
$model = Inflector::classify($result[$Model->alias][$modelField]);
$foreignId = $result[$Model->alias][$foreignKey];
if ($model && $foreignId && in_array($model, $models)) {
$result = $result[$Model->alias];
if (!isset($Model->$model)) {
$Model->bindModel(array('belongsTo' => array(
$model => array(
'conditions' => array($Model->alias . '.' . $modelField => $model),
'foreignKey' => $foreignKey
)
)));
}
$conditions = array($model . '.' . $Model->$model->primaryKey => $result[$foreignKey]);
$recursive = -1;
$associated = $Model->$model->find('first', compact('conditions', 'recursive'));
$name = $Model->$model->display($result[$foreignKey]);
$associated[$model]['display_field'] = $name?$name:'*missing*';
$results[$key][$model] = $associated[$model];
}
}
} elseif(isset($results[$Model->alias][$modelField])) {
$associated = array();
$model = Inflector::classify($result[$Model->alias][$modelField]);
$foreignId = $results[$Model->alias][$foreignKey];
if ($model && $foreignId) {
$result = $results[$Model->alias];
if (!isset($Model->$model)) {
$Model->bindModel(array('belongsTo' => array(
$model => array(
'conditions' => array($Model->alias . '.' . $modelField => $model),
'foreignKey' => $foreignKey
)
)));
}
$conditions = array($model . '.' . $Model->$model->primaryKey => $result[$foreignKey]);
$recursive = -1;
$associated = $Model->$model->find('first', compact('conditions', 'recursive'));
$name = $Model->$model->display($result[$foreignKey]);
$associated[$model]['display_field'] = $name?$name:'*missing*';
$results[$model] = $associated[$model];
}
}
return $results;
}
//display method
public function display($Model, $id = null) {
if (!$id) {
if (!$Model->id) {
return false;
}
$id = $Model->id;
}
return current($Model->find('list', array('conditions' => array($Model->alias . '.' . $Model->primaryKey => $id))));
}
}
Merci cela a fonctionné. –