CakePHP: выполнить код перед некоторыми модельными методами - PullRequest
0 голосов
/ 17 февраля 2010

Прямо сейчас у меня есть несколько методов в моей модели, которые все выбирают один и тот же объект в начале (родительский класс модели). Я хотел бы сделать это автоматически и выполнить некоторый код заранее.

Я хотел бы сказать «выполнить fetchParent () перед вызовом методов getParentId (), getParentTable () и mayChange ()».

Недостаточно установить этот родительский объект при инициализации или в качестве переменной класса, поскольку родительский объект может измениться во время выполнения.

1 Ответ

0 голосов
/ 17 февраля 2010

В зависимости от значения «некоторые методы», вы можете использовать собственные обратные вызовы Cake. Подробнее об этом на http://book.cakephp.org/view/76/Callback-Methods. Вполне вероятно, что вы захотите использовать общие функции для пользовательских методов. Если это так, то я создал собственные обратные вызовы. Для этого создайте пользовательский обратный вызов в желаемой модели / ях. Затем в AppModel::your_method() проверьте наличие имени этого метода и, если оно существует, выполните его.

Вот пример кода, который я написал в прошлом:

# In AppModel::your_method()
if ( method_exists ( $model, 'your_custom_callback' ) ) {
  $model->your_custom_callback ( $model );
}

# In YourModel
public function your_custom_callback ( $model ) {
  /** Your custom code */
}

Вы не предоставили много подробностей, поэтому я не знаю, будет ли это точно соответствовать вашим потребностям, но, возможно, это по крайней мере обеспечит отправную точку.

...