CakePHP - Доступ к данным сеанса в Model :: afterSave () - PullRequest
1 голос
/ 11 октября 2011

У меня есть MyModel, что всякий раз, когда он создается или обновляется, я хочу вставить строку в my_model_changes (MyModelChange), который является журналом всех изменений.

Проблема в том, что мне нужно MyModelChangeчтобы иметь возможность сохранить идентификатор текущего пользователя, чтобы в нем были сохранены те, кто санкционировал изменение, в MyModel.

. Я знаю, что модель не должна иметь доступа к сеансу Auth в MVC.Тем не менее, каждое изменение в MyModel должно регистрироваться , и поэтому я не хочу оставлять на усмотрение людей делать это в контроллере каждый раз, когда они изменяют модель, потому что естьриск, что он будет забыт или не будет выполнен должным образом, в этом случае журнал не будет завершен.Вместо этого я хочу использовать MyModel::afterSave(), чтобы он был автоматизирован и всегда происходил правильно.

Итак, как мне получить MyModel, чтобы найти идентификатор пользователя Auth?

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Разве невозможно сделать то, что вы хотите сделать в beforeFilter app_controller.php?Таким образом, вам не нужно ничего устанавливать в других контроллерах, кроме parent :: beforeFilter () ofcourse, если вы переопределяете его.

Но если это действительно необходимо, вы можете поместить это в вашу модель для доступаданные сеанса:

App::import('Component', 'SessionComponent');
$Session = new SessionComponent();
1 голос
/ 11 октября 2011

Возможно, мое решение не самый элегантный, но я использовал его в своем приложении, и оно сработало.Перед сохранением в контроллере я расширяю $ this-> data с помощью user_id следующим образом:

$this->data['MyModel']['user_id']=$this->Auth->user('id');

, чтобы я мог использовать его в моей модели методом afterSaveЯ надеюсь, что это может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...