我在模型中使用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设置吗?
答案 0 :(得分:0)
据我所知,在find()
回调中捕获$params
$query
(afterFind()
行为)的唯一方法是使用{{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
设置,请告诉我。