在CakePHP中,有没有办法检查afterFind回调中的find()参数值(如条件)?

时间:2014-09-30 16:11:49

标签: cakephp cakephp-2.0

我在模型中使用find()方法,在afterFind()回调中使用自定义行为。

我想测试用于$params的{​​{1}}值,但是在我的find($type, $params)代码中。

型号代码:

afterFind()

我的行为find('all', array('check' => 'BAR')); 代码:

afterFind()

我看到的唯一方法是使用public function afterFind(Model $Model, $results, $primary = false) { if ("BAR" was set ...) { // do something } } 并将类变量设置为“BAR”。稍后在beforeFind()中检查此类变量。但我担心在afterFind()beforeFind()解决之前会发生另一个find()

有任何建议或解决方案吗?

编辑: 我的问题也可以这样解读:我们能以任何方式捕获afterFind()回调中的find()$ params设置吗?

1 个答案:

答案 0 :(得分:0)

据我所知,在find()回调中捕获$params $queryafterFind()行为)的唯一方法是使用{{1}也是。

型号:

beforeFind()

行为:

$this->find('first', array('conditions' => $conditions, CHECK_AFTER_FIND => CHECK_FOO));

我真的不喜欢这个解决方案,所以如果你知道更好的解决方案来传递protected $_nextCheck = ''; public function beforeFind(Model $Model, $query) { if (array_key_exists(CHECK_AFTER_FIND, $query)) { $this->_nextCheck = $query[CHECK_AFTER_FIND]; } else { $this->_nextCheck = ''; } } public function afterFind(Model $Model, $results, $primary = false) { if ($this->_nextCheck == CHECK_FOO) { $this->checkFoo($results); } } 中的$query设置,请告诉我。