3

我不确定我应该如何将部分从 Symfony 提供给 Angular。

我在想我应该在 Symfony 中设置一个路由,然后让控制器输出文件?

但是我不确定如何简单地从控制器输出文件(即没有树枝的东西,没有真正渲染任何东西等)并且这种方法会正确缓存它吗?

例如,如果我想要 Angular 下载 partials/button.html,我应该设置如下路线:

partials:
    pattern:  /web/partials/{partial}
    defaults: { _controller: AcmeWebBundle:Partials:show, _format: html }

然后,在我的控制器中有,

...
public function showAction() {
    return file_get_contents(' ... path to file ...');
}
....

那显然行不通。我不确定如何在不通过树枝的情况下仅输出一个直接文件。或者也许我所有的部分应该只是树枝文件(只是没有任何树枝的东西)?

4

1 回答 1

8

如果您想返回这样的内容,则需要将文件的内容添加到响应正文中。

use Symfony\Component\HttpFoundation\Response;
...

public function showAction() {
    return new Response(file_get_contents(' ... path to file ...'),200);
}
...

但实际上你应该让你的网络服务器提供文件。我所做的是将我的部分放在 web 目录下的子文件夹中:

web/
     partials/
     img/
     js/
     css/

然后只需调用它们domain.com/parials/partialFileName.html,因为文件存在 symfonys rewrites 应该默认忽略它并只提供文件。

另一种方法(此处提到)是将文件放在包的 Resources/public 文件夹中,然后运行

php app/console assets:install --symlink

(其中 web 是实际的目录 web/)

这将在指向公共目录的 web 目录中生成符号链接。所以,如果你有:

Acme/DemoBundle/Resources/public/partials/myPartial.html

它将在以下位置提供:

http://www.mydomain.com/bundles/acmedemo/partials/myPartial.html
于 2013-10-31T19:02:54.463 回答