Ajax与symfony UrlHelper

时间:2011-11-20 00:04:16

标签: ajax symfony1 symfony-1.4

我使用UrlHelper执行删除操作,如下所示:

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

它生成各种魔法javascript输出,并且有效。

现在我想知道,有没有一种简单的方法可以使用UrlHelper做同样的事情ajax风格?

谢谢!

2 个答案:

答案 0 :(得分:1)

来自Symfony 1.0的link_to_remote已被弃用。 因此,您可以安装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'];

(刚刚对插件开发人员提出了这个改动)

答案 1 :(得分:0)

是的 - 你可以; - )

这是一个简单的动作场景:

/* 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实现。

所有文件都记录得非常好: