Получение имени контроллера внутри поведения - PullRequest
1 голос
/ 23 июля 2010

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

Его целью является удаление некоторых пользовательских файлов кэша при каждом событии afterSave и afterDelete модели.

Чтобы удалить нужные файлы, мне нужно знатьимя контроллера и имя действия, которое вызывается ModelWithClearCacheBehavior-> save () или ModelWithClearCacheBehavior-> delete ()

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

Ответы [ 3 ]

2 голосов
/ 23 июля 2010

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

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

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

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

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

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

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

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

0 голосов
/ 08 сентября 2011

это немного поздно, но для дальнейшего использования, в CakePHP 2.0 можно сделать это следующим образом (используя CakeRequest)

0 голосов
/ 23 июля 2010

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

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

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

...