如何从控制器向行为发送变量? CakePHP的

时间:2016-06-24 08:32:46

标签: php cakephp cakephp-3.0

我为我的表创建了一个行为,它在beforeSave()方法中设置了表的两个基本变量:created_by和created_on(修改和删除相同)。

  • 表的created_on列存储创建该类中对象的时间。
  • created_by列当前存储字符串'unkown',但我的目的是存储当前会话中活动用户的用户名。

我目前在我的控制器中使用active_user,从AppController的beforeFilter()方法设置它。如何从控制器向行为发送active_user->用户名?有可能吗?或者将字符串发送到行为的替代方法?

2 个答案:

答案 0 :(得分:1)

请记住,蛋糕具有保存createdmodified日期的内置行为。您只需在表格中启用它即可。 (参见手册here

 $this->addBehavior('Timestamp');

为了保存用户,我使用了一个在控制器中设置全局变量的插件(你可以在AppController中完成)

$authUser = $controller->Auth->user();
Configure::write('GlobalAuth', $authUser);

和行为

$user_id = Configure::read('GlobalAuth.id');

但我真的不知道这是不是最好的方法。

我使用的插件就是这个,供您参考

https://github.com/cakemanager/cakephp-utils

答案 1 :(得分:1)

您还可以使用muffin/footprint插件并自定义要保存在beforeSave中的数据。