2015-05-22 4 views
0

Я хочу создать Поведение, чтобы автоматически заполнить поле «created_by», когда запись будет сохранена с идентификатором зарегистрированного пользователя, подобно тому, как timestamp делает с «created». Однако, видимо, вы можете получить $ this-> Auth-> user ('id') всюду , за исключением в Модели.Доступ к компоненту Auth в модели

Мне нужно прибегнуть к обновлению данных запроса в методе add() контроллера перед вызовом save(), который работает, но это не СУХОЙ. Я хотел бы испечь добавить поведение в классе таблицы модели для любого объекта, у которого есть поле «created_by».

Любые идеи о том, как я мог бы это сделать в Поведении, как это делал Торт?

ответ

0

Поведение Blame что вам нужно. Вы можете использовать его или изучить его код, чтобы реализовать свои собственные.

+0

Есть разница: поведение вины, похоже, работает только для моделей, загружаемых в контроллеры напрямую. Таким образом, он не работает, например, на связанных моделях. – nIcO

+0

@ nIcO https://github.com/Usemuffin/Footprint – ADmad

1

Возможно использование системы событий. Я лично сделал это, используя Component и Behavior, которые обмениваются данными через Model.beforeSave. В основном компонент отвечает за добавление нового прослушивателя, который передает функцию в поведение, позволяющее получить идентификатор аутентифицированного пользователя.

Вы можете посмотреть на код обоих классов здесь: UserLinkComponent, UserLinkBehavior

и использовать их:

Контроллер:

$this->loadComponent('Alaxos.UserLink'); 

Модель \ Таблица:

$this->addBehavior('Alaxos.UserLink'); 
Смежные вопросы