OctoberCMS 在页面 php 部分使用 Ajax API 和无脚本回退

OctoberCMS using Ajax API with no-script fallback in page php section

我目前的简单联系表基础是:

在 php 部分包含表单和表单验证的页面,具有如下本机功能:

function onStart(){if(Request::isMethod('post')) /* do stuff */}

以上是我的"no-script"解决方案。

现在,当我想启用 OctoberCMS 时 Javascript API 我必须在 php 部分调用自定义函数,例如:

function onSubmit(){/* do stuff */}

我如何将两者结合在一个函数中,以便 /* do stuff */ 触发,无论请求是通过 Ajax 还是纯 php 发送的?

可以使用 html <noscript> 标签吗?在您的 css 中,您将放置 .noscript {display:none;} .script {display:block;},然后在您的页面、组件模板、布局等中,您可以有两种形式根据用户是否使用脚本而变化。他们可以使用相同的 onSubmit 函数。

与我假设的任何网站的任何用户交互可能不使用 Javascript 所以我默认使用标准表单而不是 js 或 ajax.

我找到了答案。

OctoberCMS 提供了一种本地方法,让表单触发自定义 onMyfunction(),只需使用另一种实现表单的方式即可。

对于可能遇到同样问题的任何人,这里是代码:

<?php
function onMyfunction(){}
?>
==
<html>
{{ form_open({ request: 'onMyfunction', id: 'my-form' }) }}
</html>

这会将 post 数据发送到 php 处理程序,无论 Javascript 是否启用。 现在您只需要使用以下方式启动您的 Ajax API:

<script>
$('#my-form').submit(function(evt){
    evt.preventDefault();
    $(this).request('onMyfunction',{})
});
</script>