Я пишу поведение ClearCache.
Это - цель, должен удалить некоторые пользовательские файлы кэша на каждом afterSave и afterDelete событии модели.
Для удаления правильных файлов, я должен знать название контроллера и название действия, которые названный ModelWithClearCacheBehavior-> сохраняют (), или ModelWithClearCacheBehavior-> удаляют ()
Мой вопрос: Как получить те имена в поведении?
Элегантного решения по этому поводу нет (по крайней мере, я его не знаю).
Вы можете сделать это с помощью класса Configure::write, например:
в beforeFilter() вашего AppController вы можете добавить следующий код:
Configure::write('current_controller', $this->name);
Configure::write('current_action', $this->action);
позже в вашем поведении вы можете получить к ним доступ с помощью
Configure::read('current_controller');
Configure::read('current_action');
Вы можете получить к ним доступ, потому что вы установили их перед любой итерацией модели.
Конечно, это не элегантно, но это работает.
Я ничего не сделал с этим, но краткое прочтение книги, кажется, указывает на то, что модель доступна (или должна быть) внутри поведения -
При создании методов поведения вам автоматически передается ссылка вызывающей модели в качестве первого параметра. Все остальные предоставленные параметры сдвинуты на одну позицию вправо .
После этого вы сможете получить доступ к модели через $ Model