Получение названия контроллера в поведении

Я пишу поведение ClearCache.

Это - цель, должен удалить некоторые пользовательские файлы кэша на каждом afterSave и afterDelete событии модели.

Для удаления правильных файлов, я должен знать название контроллера и название действия, которые названный ModelWithClearCacheBehavior-> сохраняют (), или ModelWithClearCacheBehavior-> удаляют ()

Мой вопрос: Как получить те имена в поведении?

1
задан Asgraf 23 July 2010 в 12:27
поделиться

2 ответа

Элегантного решения по этому поводу нет (по крайней мере, я его не знаю).

Вы можете сделать это с помощью класса Configure::write, например:

в beforeFilter() вашего AppController вы можете добавить следующий код:

Configure::write('current_controller', $this->name);
Configure::write('current_action', $this->action);

позже в вашем поведении вы можете получить к ним доступ с помощью

Configure::read('current_controller');
Configure::read('current_action');

Вы можете получить к ним доступ, потому что вы установили их перед любой итерацией модели.

Конечно, это не элегантно, но это работает.

2
ответ дан 2 September 2019 в 22:48
поделиться

Я ничего не сделал с этим, но краткое прочтение книги, кажется, указывает на то, что модель доступна (или должна быть) внутри поведения -

При создании методов поведения вам автоматически передается ссылка вызывающей модели в качестве первого параметра. Все остальные предоставленные параметры сдвинуты на одну позицию вправо .

После этого вы сможете получить доступ к модели через $ Model

0
ответ дан 2 September 2019 в 22:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: