【发布时间】:2011-05-01 00:24:17
【问题描述】:
我正在使用 afterFind 函数来修改 find 函数中的数据。它工作正常。如果我将 afterFind 函数移动到一个行为中(在插件中),它仍然可以工作,但只有当感兴趣的模型是主要模型时,即当模型属于另一个模型时它不会被调用。有没有办法解决这个问题?我正在使用蛋糕 1.3.4。这是该行为的简化版本:
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;
}
}
【问题讨论】:
-
从 PHP 5.4 及更高版本开始,您可以为此使用 Trait - 只需将您的
afterFind()代码放入包含 trait 声明的新文件中(将$model引用更改为$this)并包括它位于 Model 类的顶部,带有use语句。您需要使用App::import()或require()在模型文件顶部加载包含您的特征的文件。
标签: cakephp callback cakephp-1.3 behavior