在网页php部分中使用没有脚本后备的Ajax API的OctoberCMS

时间:2019-05-10 11:53:00

标签: php ajax laravel octobercms

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

一个页面,其中包含表单和php部分中的表单验证以及本机函数,如下所示:

private void addClusterItems()
{

    for (MarkerOptions markerOptions : listMarkers) {

        ShelterObject clusterItem = new ShelterObject(markerOptions.getPosition(), markerOptions.getTitle(), markerOptions.getSnippet());

        clusterManager.addItem(clusterItem);
    }
}

以上是我的“无脚本”解决方案。

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

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

无论请求是通过Ajax还是纯php发送的,我如何将两者组合成一个函数,以便function onSubmit(){/* do stuff */} 触发?

2 个答案:

答案 0 :(得分:1)

我找到了答案。

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

对于可能遇到相同问题的任何人,下面是代码:

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

这将把发布数据发送到php处理程序,无论是否启用了Javascript。 现在,您只需要使用以下命令来启动Ajax API:

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

答案 1 :(得分:0)

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

与我创建的任何网站的任何用户交互都假设某些网站可能不使用Javascript,因此我默认使用标准格式,而不是js或ajax。