CakePhpの動作後の動作関連モデルで呼び出されません
-
26-09-2019 - |
質問
FIND関数からデータを変更するために、FIND関数を変更しています。正常に動作します。 andfind関数を(プラグイン内で)動作に移動すると、それはまだ機能しますが、目的のモデルが主要なモデルである場合にのみ、モデルが別のモデルに属するときに呼び出されません。これを回る方法はありますか?ケーキ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;
}
}
解決
コードブロックがどのように適用されるかに応じて、2つのことのいずれかを実行すると思います。
- ユニバーサルバージョン:動作を使用せず、メソッドブロックをに含めます
AppModel::afterFind
- 外科バージョン:行動を使用して、機能を共有する必要がある各モデルにそれを添付します。
他のヒント
たとえば、この2つのモデルがある場合、動作は関連モデルで動作するはずではありません。
app/models/product.php
<?php
class Product extends AppModel{
var $belongsTo = array('Category');
var $actsAs = array('SomeBehavior');
}
?>
app/models/category.php
<?php
class Category extends AppModel {
var $hasMany = array('Product');
}
?>
Somehavior 動作がカテゴリに関連付けられていないため、製品のメソッドを呼び出すときにのみ実行されます
http://github.com/m3nt0r/eventful-cakephp
フォーマットを行うイベントを設定します - 必要なイベントをトリガーします。ケーキのように簡単です。
所属していません StackOverflow