我使用UrlHelper执行删除操作,如下所示:
<?php echo link_to('delete', '@foo_delete?id=' . $foo->id, array('method'=>'DELETE'))?>
它可以生成各种神奇的javascript输出,并且可以正常工作。
现在我在想,有没有一种简单的方法可以使用UrlHelper来做同样的ajax风格的事情?
谢谢!
发布于 2011-11-20 18:52:22
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'];(我只是向插件开发人员提出了这个更改)
发布于 2011-11-20 18:13:24
可以-您可以;-)
这是一个简单的框架,用于您的操作:
/* 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实现。
所有这些都被很好地记录下来了:
https://stackoverflow.com/questions/8198362
复制相似问题