OctoberCMS, использующий Ajax API с откатом без сценария в разделе php страницы - PullRequest
0 голосов
/ 10 мая 2019

Моя текущая база для простой контактной формы:

Страница, содержащая форму и проверку формы в разделе php с нативной функцией, например:

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

Выше мое решение без сценария.

Теперь, когда я хочу включить Javascript API OctoberCMS, я должен вызвать функцию, определенную пользователем, в разделе php, например:

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

Как можно объединить обе функции в одну функцию, чтобы /* do stuff */ срабатывал независимо от того, был ли запрос отправлен через Ajax или чистый php?

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Я нашел ответ.

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>
0 голосов
/ 11 мая 2019

Не могли бы вы использовать HTML-тег <noscript> ?? В вашей CSS вы должны поместить .noscript {display:none;} .script {display:block;}, тогда на ваших страницах, шаблоне компонента, макете и т. Д. У вас может быть две формы, которые меняются в зависимости от того, использует ли пользователь скрипт или нет. Они могут использовать одну и ту же функцию onSubmit.

Любое взаимодействие с любым из сайтов, которые я сделал, предполагает, что некоторые могут не использовать Javascript, поэтому я по умолчанию использую стандартные формы, а не js или ajax.

...