Вызов пользовательской функции контроллера из ajax symfony2

Я создал формы с помощью Sonata Admin Bundle. Затем я создал свой собственный контроллер (TestController) и переопределил контроллер CRUD,

Я добавил новую функцию в TestController,

namespace IFI2\MainProjectBundle\Controller;

use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Bridge\Monolog\Logger;
use Sonata\AdminBundle\Controller\CRUDController as Controller;


//use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class TestController extends Controller
{

    public function getProductPricesAction() {

         file_put_contents("/Applications/XAMPP/htdocs/IFI2 CMS/Logs.txt","HELO",FILE_APPEND);

          return new Response(json_encode($response)); 

    }
}

Затем я пытаюсь получить доступ к этой функции через мой код javascript,

<script type="text/javascript">

    function test1() {

        $.ajax({
            type:"POST",
            //dataType: "json",
            url: '{{ path('main_project.admin.test')}}',
            success: function(successMsg) {
                alert("successMsg");

            },
            error: function(errorMsg) {
                alert("errorMsg");

            }
        });
     }

</script>

Вот мой файл routing.yml,

main_project.admin.test:
  pattern:  /getProductPrices/
  defaults: { _controller: IFI2MainProjectBundle:Test:getProductPrices}

У меня уже есть запись services.yml для этой сущности,

main_project.admin.cobrand:
    class: MainProjectBundle\Admin\TestAdmin
    arguments: [~, MainProjectBundle\Entity\Test, "MainProjectBundle:Test"]
    tags:
        - {name: sonata.admin, manager_type: orm, group: admin, label: Test}
    calls:
        - [setTemplate, [edit, MainProjectBundle:Test:edit.html.twig]]

Я получаю следующую ошибку в своем ответе,

Для контроллера MainProjectBundle\Controller\TestController не определен _sonata_admin и текущий маршрут main_project.admin.test

Помогите, пожалуйста, как его вставить?

Спасибо, Фейсал Насир.


person faisal nasir    schedule 23.11.2013    source источник


Ответы (2)


Добавьте новый маршрут в свой метод администратора configureRoutes

protected function configureRoutes(RouteCollection $collection)
{
    parent::configureRoutes($collection);
    $collection->add('get_product_prices');
}

Удалите свой маршрут main_project.admin.test

Новый маршрут имеет $baseRouteName от вашего администратора в качестве префикса и имеет имя:

base_route_name_get_product_prices

с использованием

{{ path('base_route_name_get_product_prices') }}
//or with admin
{{ admin.generateUrl('get_product_prices') }}
person Petr Slavicek    schedule 29.11.2013
comment
Как добавить параметр маршрута в коллекцию? Я хочу добавить идентификатор в качестве параметра - person faisal nasir; 09.12.2013
comment
В обоих вариантах одинаково: path('base_route_name_get_product_prices',{'id': 1}) admin.generateUrl('get_product_prices',{'id': 1}) - person Petr Slavicek; 09.12.2013

В routing.yml добавьте следующее:

main_project.admin.test:
  pattern:  /getProductPrices/
  defaults: { _controller: IFI2MainProjectBundle:Test:getProductPrices,"_sonata_admin": "main_project.admin.cobrand" }

person Shadi Akil    schedule 17.10.2018