我使用UrlHelper执行删除操作,如下所示:
<?php echo link_to('delete', '@foo_delete?id=' . $foo->id, array('method'=>'DELETE'))?>
它生成各种魔法javascript输出,并且有效。
现在我想知道,有没有一种简单的方法可以使用UrlHelper做同样的事情ajax风格?
谢谢!
答案 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实现。
所有文件都记录得非常好: