首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从模板调用Cakephp3闪存消息

从模板调用Cakephp3闪存消息
EN

Stack Overflow用户
提问于 2016-04-26 23:24:03
回答 3查看 1.1K关注 0票数 1

我在cakephp3的Ajax请求上工作,需要显示一个成功的闪光成功的消息给用户。

下面是我正在做的事情:

代码语言:javascript
复制
$('#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');
                }
            });
        }
    });

除了闪光消息,其他的一切都很好。如何在视图中显示cakephp3的flash消息?

下面是我如何通过ajax从控制器获取请求:

代码语言:javascript
复制
echo $query->execute()? true : false;
EN

回答 3

Stack Overflow用户

发布于 2016-04-28 02:34:50

Flash消息不适用于json响应。

你应该做下面的事。

在您的控制器中:

代码语言:javascript
复制
$result = $query->execute();
if ($this->request->is('ajax')) {
    $this->set(compact('result'));
    $this->set('_serialize', 'result');
    return;
}

在_serialize调用set将创建json响应,而无需为此控制器方法创建相应的json模板。

在js文件中

代码语言:javascript
复制
success : function(data, textStatus, jqXHR){
    //the result is available as jqXHR.responseJSON
}
票数 0
EN

Stack Overflow用户

发布于 2018-10-03 19:06:12

您可以执行以下操作:

控制器::中的

代码语言:javascript
复制
   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::中的

代码语言:javascript
复制
     $.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);
                                            }
                                        });

我使用的是烤面包机插件,但你可以使用任何你选择的flash。该邮件将在您的response.message中提供

票数 0
EN

Stack Overflow用户

发布于 2019-03-26 19:09:42

在控制器和布局/ajax.ctp中设置布局"ajax“的另一种方法是:添加echo $this->Flash->render();

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36869265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档