Можно ли использовать стандартные действия сохранения формы Symfony для публикации данных через AJAX?

Я играл с Symfony, jQuery, jqGrid и AJAX. Для каждого нового поста я делаю следующее:

  1. добавление записи маршрутизации в routing.yml
  2. определение нового действия в файле Actions для модуля. Это читает параметры, присваивает значения и сохраняет объект

Как и в случае jqGrid, форма 'Add Row' не является формой Symfony. Есть ли способ обмануть Symfony и отправить данные в действие executeCreate для сохранения новой записи.

Если нет, предоставляет ли Symfony способ быстро генерировать веб-сервисы для запросов AJAX для каждого из модулей? Это разумная функция?

Что мне придется делать в противном случае, так это

  • создать маршрутизацию
  • создать новое действие
  • получить все параметры
  • создать экземпляр объекта
  • присвоить значения и сохранить

Любая помощь в этом быстрее будет оценена. заранее спасибо


person Prasad    schedule 23.05.2010    source источник
comment
вопрос не ясен? или слишком сложно? :(   -  person Prasad    schedule 23.05.2010


Ответы (2)


Если вы используете коммерческую версию jqGrid для PHP, которая доступна за 299 долларов США (см. http://www.trirand.net/forum/default.aspx?g=posts&t=200), то вам следует просто задать вопрос на соответствующем форуме поддержки (см. http://www.trirand.net/forum/default.aspx?g=posts&t=200 в качестве примера ). Если вы используете бесплатную версию jqGrid, то, вероятно, вам следует просто попробовать sfAlyssaJqGridPlugin (см. http://www.symfony-project.org/plugins/sfAlyssaJqGridPlugin) или ysJQueryUIPlugin (см. http://trac.symfony-project.org/browser/plugins/ysJQueryUIPlugin и http://www.celalo.com/integrating-jqgrid-with-symfony-propel/).

Я не использую Symfony сам. В общем, вы можете интегрировать в jqGrid любой веб-сервер, предоставляющий чистые данные либо в формате JSON (лучший способ), либо в формате XML, но вы должны знать возможности ajax. Если sfAlyssaJqGridPlugin и ysJQueryUIPlugin не решат вашу проблему, вам следует выяснить, как вы можете выполнить следующие действия в чистом JavaScript/jQuery:

  1. Получите данные с сервера, которые должны отображаться внутри jqGrid. jqGrid может предоставить серверу дополнительную информацию о сортировке, разбиении по страницам и фильтрации данных, выбранных на стороне клиента пользователем, использующим jqGrid. Эта информация будет добавлена ​​в качестве параметра к URL-адресу пользователя для запросов к серверу или может быть отправлена ​​​​на сервер другим способом (в jqGrid есть много возможностей настройки).
  2. Измените данные (строку данных), отображаемые в jqGrid.
  3. Добавьте новые данные (строку с новыми данными), которые будут отображаться в jqGrid.
  4. Удалить данные (строку данных), отображаемые в jqGrid

Все эти действия можно настроить в jqGrid, поэтому для начала будет достаточно небольшого JavaScript с использованием jQuery.ajax и никакого jqGrid для всех этих действий. Тогда я мог бы помочь вам реализовать эти действия внутри jqGrid.

person Oleg    schedule 23.05.2010
comment
Спасибо. jqGrid отлично работает для меня. Мне нужно простое решение на стороне Symfony, чтобы принимать данные, отправленные jqGrid, как есть, и сохранять их на сервере с помощью действия Symfony. - person Prasad; 24.05.2010

Чтобы каждый раз не создавать новый маршрут, вы можете создать одно действие ajax, которое перенаправляет ваши запросы в нужную часть приложения.

Просто создайте действие, которое принимает дополнительный параметр под названием «действие», а затем перешлите запрос.

person Jon Winstanley    schedule 27.05.2010