在CakePHP3中使用模态(或:控制器中的Javascript)

在CakePHP3中使用模态(或:控制器中的Javascript),javascript,cakephp,model-view-controller,bootstrap-modal,cakephp-3.0,Javascript,Cakephp,Model View Controller,Bootstrap Modal,Cakephp 3.0,我有一个标准表格,通过蛋糕/烘焙生成 发送表单时,我的控制器会检查一个简单的条件 在条件A下,它只保存数据$foo, $this->request->getData 在条件B下,它应该调用JS警告,然后保存数据。 我最喜欢的警告是Bootstrap4模式,但如何在控制器中调用模式? 我知道这违反了MVC的理念。因此,其他想法是受欢迎的 我看到的唯一解决方案是重定向到一个新操作,该操作只会打开一个模式。鉴于该条件只能在服务器端进行评估,例如,您可以在发送表单之前或发送表单本身时发出AJAX请求,然

我有一个标准表格,通过蛋糕/烘焙生成

发送表单时,我的控制器会检查一个简单的条件

在条件A下,它只保存数据$foo, $this->request->getData 在条件B下,它应该调用JS警告,然后保存数据。 我最喜欢的警告是Bootstrap4模式,但如何在控制器中调用模式? 我知道这违反了MVC的理念。因此,其他想法是受欢迎的


我看到的唯一解决方案是重定向到一个新操作,该操作只会打开一个模式。

鉴于该条件只能在服务器端进行评估,例如,您可以在发送表单之前或发送表单本身时发出AJAX请求,然后使用相应的信息进行响应,您可以在AJAX响应处理程序中对这些信息进行评估,以决定是否需要显示模式


然后,您可能应该使用一个额外的标志重新发送表单,该标志指示连续请求来自警告对话框,并且您可以继续保存数据。

使用flash组件有什么问题,例如:-

$this->Flash->error(__('This is the warning.'));
记住添加$this->loadComponent'Flash';在控制器的初始化功能中,如下所示:-

class ArticlesController extends AppController{

    public function initialize(){

        parent::initialize();
        $this->loadComponent('Flash'); // Include the FlashComponent
    }

    // Rest of your code here...
}