Estoy usando una función afterFind para modificar los datos de una función de búsqueda. Funciona bien. Si muevo la función afterFind a un comportamiento (en un complemento), todavía funciona, pero solo cuando el modelo de interés es el modelo primario, es decir, no se llama cuando el modelo pertenece a otro modelo. ¿Hay alguna forma de evitar esto? Estoy usando cake 1.3.4. Esta es una versión simplificada del comportamiento:comportamiento cakephp despuésEncuentre no invocado en los modelos relacionados
class ChemicalStructureBehavior extends ModelBehavior {
function afterFind(&$model, $results, $primary) {
foreach ($results as &$unit) {
// format chemical formula (with subscripts)
$unit[$model->alias]['chemical_formula_formatted'] = preg_replace('/([0-9]+)/i', '<sub>$1</sub>', $unit[$model->alias]['chemical_formula']);
}
return $results;
}
}
Desde PHP 5.4 en adelante, puede usar un Rasgo para esto - simplemente ponga su código 'afterFind()' en un nuevo archivo que contenga la declaración de rasgo (cambiando las referencias '$ model' a' $ this') e inclúyalo en la parte superior de su clase de modelo con la instrucción 'use'. Tendrá que usar 'App :: import()' o 'require()' para cargar el archivo que contiene su rasgo en la parte superior de su archivo de modelo. – BeesonBison