Как передать несколько действий контроллера symfony3 в один файл js (вызов ajax)

У меня есть несколько действий контроллера, таких как adminbedroomtypesort, adminbookingstatussort, communicationtypesort, countrysort, currencysort , durationsort, featuressort, floorsort, furnishedsort, includedbillssort и один файл js.

Мой js-файл:

$(document).ready(function() {  
 var data = {}; 
$( "#sortable" ).sortable({
    update: function(event, ui) { 
        var update = ui.item.index();
        update = update+1;
        data['update'] = update;          
        console.log('update sortorder: '+update);
    },
    start: function(event, ui) { 
        var start = ui.item.index();
        start = start+1;
        data['start'] = start;
        console.log('start: ' +start);
    },
    stop: function (event, ui) {  
        $('#loader').show();

        $.ajax({
        type: 'POST', 
        url: Routing.generate('adminbedroomtypesort'),
        contentType: 'application/x-www-form-urlencoded',
        data: {data: data},
       success: function(result,status,xhr){
            var res = JSON.parse(result);                
             if(res){
               $('#loader').hide();
             } 
        },
        error: function(xhr, status, error) {     
                console.log(status);
            } 
    });
    }
});
$( "#sortable" ).disableSelection();
});

Действие контроллера:

/**
 * @Route("/bookingstatus/sort", name="adminbookingstatussort", options = { "expose" = true })
 */
public function sortbookingstatusAction(Request $request) {

    if ($request->isXmlHttpRequest()) {
        $em = $this->getDoctrine()->getManager();
        //retrieve sort order from bedroomtypelistpage     
        $data = $request->request->get('data');
        //Retrieve the start position and end position(updateorder) for the sorted field
        $start = $data['start'];
        $updateorder = empty($data['update']) ? NULL : $data['update'];
        if(empty($updateorder)){
          return new Response(json_encode('success')); 
        }               
        $bedroomtype = $em->getRepository('EpitaHousingBundle:Bookingstatus')->findOneBy(array('sortorder' => $start));
        // flag -1 drag order is top to bottom
        // flag 1 drag order is bottom to top
        $flag = ($start < $updateorder) ? -1 : 1;
        $btwelements = $this->getDoctrine()
                ->getRepository(Bookingstatus::class)
                ->findBedroom($start, $updateorder, $flag);
        foreach ($btwelements as $betweenvalues) {
            $order = $betweenvalues->getSortorder();
            $betweenvalues->setSortorder($order + $flag);
        }
        $bedroomtype->setSortorder($updateorder);
        $em->flush();
        return new Response(json_encode('success'));
    }
    return new Response('Success');
}

как и несколько действий контроллера, здесь я выполнил одно действие контроллера для одного отдельного файла js, он работает нормально, но здесь я использую один и тот же файл js, многократно меняя только URL-адреса. Есть ли способ передать url: Routing.generate('adminbedroomtypesort'), несколько URL-адресов в один файл js, соответствующие действия контроллера, помогите мне. Спасибо за заранее...


person somesh    schedule 06.10.2017    source источник
comment
Пробовали ли вы stackoverflow.com/a/42341050/789213 или stackoverflow.com/a/22853154/789213?   -  person Garfield    schedule 06.10.2017
comment
Здесь я хочу передать несколько действий контроллера одному URL-адресу файла js: Routing.generate('adminbedroomtypesort') внутри ajax зависит от выбора действий контроллера   -  person somesh    schedule 06.10.2017
comment
js один и тот же для каждого действия контроллера, но только одно изменение URL-адреса маршрутизации ajax. У меня есть несколько имен действий:   -  person somesh    schedule 06.10.2017
comment
просто оберните бит ajax внутри функции, принимая URL-адрес в качестве параметра, и передайте этот параметр вызову ajax вместо его жесткого кодирования. Как и в случае с любой функцией программы, в этом весь смысл функций — создавать повторно используемый код. Возможно, вам потребуется также разрешить изменение других параметров, таких как данные для отправки, обратный вызов для запуска при возврате ajax и т. д. и т. д. Но основная концепция не сложна — если вы хотите повторно использовать ajax код, затем создайте повторно используемую функцию, которая принимает URL-адрес в качестве входной переменной, а затем запускает код ajax, включая эту переменную URL-адреса.   -  person ADyson    schedule 06.10.2017
comment
Спасибо всем, я получил решение   -  person somesh    schedule 06.10.2017
comment
var urls = document.getElementById(sort).innerHTML; вар URL = ''; if(urls === 'Типы спален'){ url = 'adminbedroomtypesort'; } else if(urls === 'Типы состояния бронирования'){ url = 'adminbookingstatussort'; }   -  person somesh    schedule 06.10.2017
comment
Я нацеливаюсь на идентификатор div, чтобы получить каждый URL-адрес на основе операторов if   -  person somesh    schedule 06.10.2017
comment
Теперь я могу повторно использовать файл js для каждого действия контроллера. Спасибо за ваши ценные предложения.   -  person somesh    schedule 06.10.2017