我正在使用cakephp3处理Ajax请求,并且需要在成功时向用户显示flash成功消息。
以下是我正在做的事情:
⎣x/y⎦
其他一切工作正常,但是flash消息。如何在视图中显示cakephp3的flash消息?
以下是我如何通过ajax从控制器获取请求:
$('#validate-btn').on('click', function () {
$('#validate-btn').text("Validating...");
$('#results-form').submit();
if (ids.length !== 0) {
$.ajax({
type: "POST",
url: "<?php echo Cake\Routing\Router::url(array("controller" => "results", "action" => "validateSelected"));?>" + "/" + JSON.stringify(ids),
cache: false,
success: function (data) {
$('#validate-btn').text("Validate Selected");
<?php $this->Flash->success("Validated"); ?>
},
error: function (data) {
alert('s');
}
});
}
});
答案 0 :(得分:0)
Flash消息不适用于json响应。
你应该做下面的事。
在您的控制器中:
sqlquote()
在_serialize中调用set可以创建一个json响应,而无需为此控制器方法创建相应的json模板。
在你的js文件中
$result = $query->execute();
if ($this->request->is('ajax')) {
$this->set(compact('result'));
$this->set('_serialize', 'result');
return;
}
答案 1 :(得分:0)
您可以执行以下操作:
在控制器中::
if ($this->XYZ->save($eventEntity)) {
$this->Flash->success(['message' => __('Updated the Event'), 'title' => __('Success')]);
} else {
$this->Flash->error(__('An Error occurred while updating the event. Please try again'));
}
在Ajax中::
$.ajax({
type: "POST",
async: true,
url: $("#xyz").attr("data-confirm"),
dataType: "json",
success: function (response) {
toastr.success(response.message, response.title);
},
error: function (data) {
toastr.error(data.message, data.title);
}
});
我正在使用烤面包机插件,但是您可以使用任何选择的闪光灯。该消息将显示在您的response.message
中答案 2 :(得分:0)
另一种方法是在控制器和layout / ajax.ctp中设置布局“ ajax”:
添加echo $this->Flash->render();