Использование Ajax для доступа к методу контроллера в Symfony - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть тип формы, который использует шаблон веточки, и в этой ветке я получаю изображения, прикрепленные к текущему объекту listing, и отображаю их вместе с возможностью удалить их для пользователя.Я хотел бы иметь возможность, где пользователь может удалять изображения по отдельности без обновления страницы, поэтому я пытаюсь запустить метод контроллера с помощью Ajax.

scripts.js

$('.delete_image').on('click', function(e) {
  $.ajax({
    type: 'POST',
    url: '/delete_image',
    data: ({
      listing_id: $('#listing_id').val(),
      imageName: 'nature-forest-trees-158251.jpg'
    }),
    success: function(response) {},

    error: function(jqXHR, textStatus, errorThrown) {
      alert('status code: ' + jqXHR.status + 'errorThrown: ' + errorThrown + 'jqXHR.responseText:' + jqXHR.responseText);
    }
  })
})

imageName - это просто значение заполнителя (изображения, которое я отлаживаю), и в моем контроллере у меня есть

ListingController.php

/**
 * @Route("/delete_image", name="delete_image")
 * @Method({"GET", "POST"})
 * @ParamConverter("listing", class="DirectoryPlatform\AppBundle\Entity\Listing")
 */
public function deleteImage(Request $request, Listing $listing) {
  // $listing_id = (isset($_POST['listing'])) ? $_POST['listing'] : -1;
  // $imageName = (isset($_POST['imageName'])) ? $_POST['imagename'] : -1;
  $listing_id = $request->get('listing');
  $imageName = $request->get('imageName');
  $this->get('punk_ave.file_uploader')->removeFiles(array('folder' => 'tmp/attachments/' . $listing->getId() . '/'. $imageName));

  exit(0);
}

Я пытался использовать $_POST[] и $request->get() безрезультатно.Возможно, я мог бы использовать встроенные сценарии, но это то, чего я хочу избежать из-за лучших практик кодирования.

1 Ответ

0 голосов
/ 26 сентября 2018

Способ получения переменных POST внутри контроллера:

$listing_id = $request->request->get('listing');

Однако в вашем случае я бы скептически отнесся к тому, чтобы использовать запросы AJAX в том смысле, что вы могли бы избежать накладных расходов на вызовы AJAX,правильно манипулируя DOM (например, удаляйте изображение из DOM при нажатии кнопки «Удалить», не предпринимая никаких действий на сервере) и, наконец, отправьте все изменения вместе, отправив форму, а затем удалите удаленные изображения из вашей сущности.

Этот последний вызов также может быть вызовом AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...