如何在cakepp中的控制器之间连接或交换信息


How do I connect or exchange information between controllers in cakephp

我对如何在CakePHP 2.0中的控制器之间交换信息有点困惑。这基本上就是我要做的。

我有一个包含id、名称、路径等的图像数据库表。保存用户用户、密码等的users表

我有一个型号Image.php,一个控制器-ImagesController.php,和views-View/Images/add.ctp View/Images/index.ctp View/Images/View.ctp

我有一个模型User.php、一个控制器UsersController.php和视图-查看/Users/index.ctp,查看/Users/登录.ctp

我的View/Images/index.ctp列出了所有已上传的图像,View/Images/sadd.ctp允许任何人上传图像

View/Users/login.ctp允许用户登录,如果信息正确,它会将用户发送到View/Users/index.ctp

1) 如何使View/Images/add.ctp只能由登录的用户访问。我是否应该将他们重定向到带有用户会话信息的View/Images/sadd.ctp,并检查数据是否已设置,或者它在CakePHP中如何工作?

2) 如果我使用$this->Image->saveAll($data_s)从images更新图像表。如何将部分数据保存到用户表中?我看过文件,但还是有点困惑。

  1. 使用AuthComponent来处理身份验证,这正是您真正想要的
  2. 如果这两个模型相关联,则可以通过另一个访问其中一个。例如,如果图像属于用户,则可以通过简单的$this->Image->User从图像模型访问用户模型。否则,可以使用$uses属性或临时使用loadModel方法将任何模型包括在任何控制器中
  1. 您应该在控制器中进行检查——如果您没有登录,不要让代码落入将使用该视图的分支中。你不应该把这种逻辑放在一个视图中。

  2. 调用$this->User->save($some_data),其中$this->User已加载用户模型,而$some_data是要插入到users表中的缩小的数据子集。