как динамически изменить направление формы с помощью ajax или javascript в octobercms - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть форма, и я хотел бы, чтобы при ее отправке она перенаправляла меня на другую страницу,

, зная, что путь перенаправления должен быть динамическим,

это означает, чтоЯ использую функцию javascript, которая выбирает пользователя и возвращает строку

обработчик ajax data-request-redirect принимает только строку и выполняет код не javascript:


title = "test"
url = "/test"
layout = "default"
is_hidden = 0
==
<?php
function onStart()
{
    $this['example'] = Session::get('example-key');
}

function onTest()
{
    Session::put('example-key', input('my-input'));
}

?>
==

<form   method="POST"  data-request="onTest" data-request-redirect="......" name="formu" accept-charset="UTF8"  enctype="multipart/form-data">


    <input type="text" name="my-input">
    <button type="submit">Submit</button>
</form>

{% if example %}
    <strong>Example: {{ example }}</strong>
{% endif %}


<script type = "text/javascript">

           $(function() {

               var $buttonBien = $('.bien');

                $buttonBien.on('click',function (event) {
                    event.preventDefault();

                });


           });


function type_bien(x){

    switch( x) {
    case 0:
       return "formulaire_villa";

        break;
    case 1:

                    return "formulaire_villa";
        break;
    case 2:
                   return "formulaie_riad";
        break;

    case 3:


        document.getElementById(3).checked="true";
       /* document.forms["formu"].action="formulaire_appartement";*/

            return "formulaire_appartement";
        break;

    default:
         alert('local_commerce est selected');
}

}


</script>

что делать в data-request-redirect

Я действительно заблокирован

пожалуйста, помогите

1 Ответ

0 голосов
/ 16 ноября 2018

Может быть просто использовать Redirect фасад.

, когда вы используете October Ajax framework, вы можете отправлять перенаправление с сервера.

, поэтому из вашей функции/ code code.

use Redirect;

function onTest()
{
    $defaultUrl = '/home';

    // you get data from post
    // from hidden or select etc ...
    $someChoise = post('some-choise');

    if($someChoise == 'my-profile') {
        $defaultUrl = '/user/profile';
    }

    Session::put('example-key', input('my-input'));
    return Redirect::to($defaultUrl);
}

more info on Redirect facade https://octobercms.com/docs/services/response-view#redirects

Теперь он будет автоматически перенаправлять веб-страницу на /home, если ничего не указано

если вы укажете some-choise как my-profile, он перенаправит страницу на /user/profile

, так что вы сможете даже передать url in post data и использовать его, вам ничего не нужно делатьfancy [поэтому вы можете опустить data-request-redirect]

data-request-redirect - строка, поэтому ее статические данные могут быть, вы можете обновить ее, но я полагаю, что этот способ лучше для динамического URL-адреса перенаправления.[redirect specified as string => https://octobercms.com/docs/ajax/javascript-api#javascript-api]

если есть сомнения, прокомментируйте.

...