【问题标题】:Using modal in CakePHP3 (or: Javascript in Controllers)在 CakePHP3 中使用模态(或:控制器中的 Javascript)
【发布时间】:2017-07-18 15:22:19
【问题描述】:
我有一个标准表格,通过 cake/bake 生成。
发送表单时,我的控制器会检查一个(微不足道的)条件,
- 在条件 A 上它只是保存数据 (patchEntity($foo,
$this->request->getData())
- 在条件 B 上它应该调用一个 JS 警告,然后保存数据。
我最喜欢的警告是 Bootstrap4 模态,但是如何在控制器中调用模态?
我知道这种违反MVC的想法。因此,欢迎替代想法。
我看到 atm 的唯一解决方案是我重定向到一个新操作,它只打开一个模式。
【问题讨论】:
标签:
javascript
cakephp
model-view-controller
bootstrap-modal
cakephp-3.0
【解决方案1】:
鉴于只能在服务器端评估条件,例如,您可以在发送表单之前或发送表单本身发出 AJAX 请求,然后使用您可以评估的相应信息进行响应AJAX 响应处理程序来决定是否需要显示模式。
然后您可能应该(重新)发送带有附加标志的表单,该标志表明连续请求源于警告对话框,并且您可以继续保存数据。
【解决方案2】:
使用 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...
}