【发布时间】:2015-04-01 02:35:39
【问题描述】:
我正在使用 Symfony2,我有一些代码要执行。它执行一些数据库备份类型的工作。这对于这个问题并不重要。
我想要的是当我按下一个按钮时,它会执行代码并返回主视图。不要加载/重新加载任何页面。但控制器总是期待响应。
控制器必须返回一个响应(给定 null)。您是否忘记在控制器的某处添加 return 语句?
所以我试着用null伪造它
按钮代码喜欢
<li id="menu"><a href="{{ path('backup_label') }}"><span class="icon-align-justify"></span> Backup</a></li>
以及我尝试过的响应代码
return $this->render(
null,
array('status' => 'ok')
);
或
return $this->render(
'',
array('status' => 'ok')
);
或
return new Response('<html><body></body></html>')
或
return new Response()
这些要么返回错误,要么返回空白页。
在没有得到新响应的情况下执行一些 php 代码的方法是什么?调用函数,执行并保持相同的视图,无需任何加载,简单。
我可以使用 ajax 来做到这一点。但我希望如果没有 ajax 是可能的。
【问题讨论】:
-
这没有意义,从逻辑上讲,如果您正在执行某些控制器操作,那么应该有一些响应,因此控制器必须生成一些响应,无论您的请求完成还是失败,都应该检查一下您的要求
-
@MKhalidJunaid 我想要的只是不给页面加载/重新加载。我的代码将下载一个 zip。而已。就是这么简单。但是 symfony 控制器的响应迫使我重新加载/加载。在不加载页面的情况下执行一段代码。并且没有ajax。现在如果应该有回应,我不知道的应该是什么,这就是这个问题的意义。
-
在官方文档中看这部分:symfony.com/doc/current/components/http_foundation/…。您不需要(尽管可以)手动设置标题 - 您只需要使用适当的响应。
-
@AtanuCSE Alex 是对的,你已经为生成 zip 数据做了你的事情,并以正确的标题返回响应,这样你的页面就不会重新加载,而是从你的控制器下载返回的内容,即压缩文件