【问题标题】:onSend function does not execute it's code when OctoberCMS AJAX calls it当 OctoberCMS AJAX 调用 onSend 函数时,它不会执行它的代码
【发布时间】:2019-04-09 00:10:31
【问题描述】:

我正在尝试使用 10 月份的前端表单数据属性 API 执行一些代码。 onSend 函数执行简单的代码,例如 echo 'something',但不执行更复杂的代码,例如尝试使用 mpdf 插件。 估计和AJAX重载页面有关,不知道怎么解决。

我尝试使用来自数据属性 API 的数据请求,调用函数 onSend,但 onSend 上的代码没有执行。

我的表单头如下:

<form class="register-form" method="POST" data-request="onSave">

还有我的 onSave 函数:

public function onSave(){
$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML('<div style="text-align: center"> Test </div>');
$mpdf->Output();
}

请注意,这两个代码都在一个组件上,当我尝试类似以下操作时会执行 onSave 函数:

echo 'Test';

【问题讨论】:

    标签: octobercms octobercms-backend


    【解决方案1】:

    您正在尝试渲染/流式传输 PDF?您在浏览器中查看过网络监视器吗?

    我要测试的是带有public function onRun() 调用的mpdf 代码。确保它有效。

    尝试更新部分内容。 data-request-update="'{{__SELF__::partial}}', '#element'"

    除此之外,您可能需要进行整页重定向。我如何流式传输 PDF 是我有一个 routes.php 接受这个https.domain.com/stream/pdf?id=encryptedsomething。该路由被编程为在解密id后查找模型中的特定对象并以PDF格式显示数据。

    【讨论】:

    • 您好,感谢您的回答。 mpdf 库已正确安装,当我在 onRun 方法上调用它时,它确实有效。它似乎只有在 AJAX 表单提交调用的方法上才会中断。我的目的是生成 pdf 文件并通过电子邮件发送,这是一份填写表格数据的合同。我在 data-request-update 属性之后阅读了文档,但我不想更新页面上的任何内容。您认为 AJAX 调用与未执行的函数有关吗?顺便说一句,开发者控制台没有显示任何错误。感谢您的帮助。
    • @GabrielFranco 不幸的是,我有一段时间没有使用 mpdf 库了。我已切换到 Renatio 的 DynamicPDF 插件。我确实记得一些关于函数中没有return 的错误。尝试添加return $mpdf-&gt;Output();除此之外,您可能需要将数据保存到模型然后重定向到可以获取该模型信息并以这种方式构建PDF的路线。
    • 好吧,我会努力的。非常感谢您的帮助!
    • @GabrielFranco 是的,这似乎对你有用吗?
    • 您好,您的解决方案非常有用。我将重定向到呈现和发送 pdf 的页面。这似乎是一个兼容性问题。我正在查看 Renatio 的 DynamicPDF,也许我也会改变我的做法。已将您的答案标记为已接受。又来了!
    猜你喜欢
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 2011-04-09
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多