CakePHP动态元素

CakePHP动态元素,cakephp,element,Cakephp,Element,我正在尝试在CakePHP应用程序中创建一个MessageBoard类型的元素。此元素将显示在使用特定布局的所有页面和视图上。我希望它显示模型中的所有消息,然后在单击链接时显示添加表单,然后在提交时返回更新的消息列表。所有这些都不会影响当前视图/页面 我已经设置了我的消息模型/控制器/索引,带有请求索引操作的消息板元素。这个很好用。然而,我对如何返回单击链接的原始页面/操作感到困惑。我不能使用$this->referer(),因为这将链接回add()操作;我更希望的是在此之前链接到页面/视图 关

我正在尝试在CakePHP应用程序中创建一个MessageBoard类型的元素。此元素将显示在使用特定布局的所有页面和视图上。我希望它显示模型中的所有消息,然后在单击链接时显示添加表单,然后在提交时返回更新的消息列表。所有这些都不会影响当前视图/页面

我已经设置了我的消息模型/控制器/索引,带有请求索引操作的消息板元素。这个很好用。然而,我对如何返回单击链接的原始页面/操作感到困惑。我不能使用$this->referer(),因为这将链接回add()操作;我更希望的是在此之前链接到页面/视图


关于如何实现这样的目标,有什么一般性的建议吗?

我将使用Ajax来实现这一点,并使用Ajax布局

$this->layout('ajax')

然后,您将能够设置一个完整的堆栈来处理此操作,并将各种内容作为参数传递到控制器操作中

通过使用Ajax,您无需担心传入referer控制器/操作对。您还可以通过调用
消息控制器
,使用此返回来更新列表。这样做的额外好处是,您可以在实际控制器中切换布局,因此根本不需要编写任何额外的代码

在控制器中,可以检查Ajax

if($this->params['requested']){
  $this->layout('ajax');
  return $data;
}else{
  $this->set('data',$data);
}

谢谢你的指导。我会调查的。