Аякс с симфонией UrlHelper - PullRequest
       3

Аякс с симфонией UrlHelper

0 голосов
/ 20 ноября 2011

Я использую UrlHelper для выполнения действия удаления, например так:

<?php echo link_to('delete', '@foo_delete?id=' . $foo->id, array('method'=>'DELETE'))?>

, который генерирует все виды магического вывода на JavaScript и работает.

Теперь мне интересно, есть ли простой способ использовать UrlHelper для того же стиля ajax?

Спасибо!

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

link_to_remote из Symfony 1.0 устарел.Таким образом, вместо этого вы можете установить sfJqueryReloadedPlugin и использовать jq_link_to_remote()

<?php use_helper('jQuery');

<?php echo jq_link_to_remote('delete', array(
  'url' => '@foo_delete?id=1', 
  'confirm' => 'Are you sure?', 
  'csrf' => 1, 
  'method' => 'delete')) ?>

Но есть проблема с этим: sfJqueryReloadedPlugin не поддерживает метод DELETE, так чтоВы можете сделать это небольшое изменение на плагине.В plugins/sfJqueryReloadedPlugin/lib/helper/jQueryHelper.php, где вы читаете:

if ((isset($options['method'])) && (strtoupper($options['method']) == 'GET')) $method = $options['method'];

должно быть:

if ((isset($options['method'])) && (strtoupper($options['method']) == 'GET' || strtoupper($options['method']) == 'DELETE')) $method = $options['method'];

(только что предложил это изменение разработчикам плагинов)

0 голосов
/ 20 ноября 2011

Да - можно; -)

Вот простой скелет для вашего действия:

/* is it an AJAX request ? */
if($request->isXmlHttpRequest()){
    /* do what you want to do */

    /* Text as result */
    return $this->renderText("All worked well with ajax");
}

Конечно, вы можете использовать JSON в качестве возврата, конкретный заголовок HTTP или некоторые другие улучшения. Это зависит от вашей реализации JS.

Все задокументировано очень хорошо:

...