我尝试设置https://github.com/ekino/EkinoWordpressBundle 我从设置手册,网站工作,但资产有错误的路径
我在symfony2 twig模板中的例子
<script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>
在渲染源中我将其视为
<script src="/js/routing?callback=fos.Router.setData"></script>
或直接
<img src="/bundles/mybundle/img/test.jpg">
for / is real path
/symfony/web/bundles/mybundle/img/test.jpg
所以它不起作用。手册的页面结构是
/
/symfony
/symfony/web
/index.php
我没有在捆绑作者手册中找到概念,
我应该在htacces中添加一些内容,还是可以在symfony config中配置它?
这里提出.htacces
DirectoryIndex index.php
IndexIgnore /symfony
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^index\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .? - [L]
# Rewrite all other queries to the front controller.
RewriteRule .? %{ENV:BASE}/index.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /index.php/
</IfModule>
</IfModule>
答案 0 :(得分:1)
我刚刚在Github问题上回答了这个问题(https://github.com/ekino/EkinoWordpressBundle/issues/77),但我也会在这里回答,因为有些人应该对这个问题感兴趣。
我至少看到两种方法来解决这个问题。
简单的方法是将(Wordpress)根目录上的符号链接添加到symfony/web/js
和symfony/web/bundles
,例如:
$ ln -s symfony/web/js js
$ ln -s symfony/web/bundles bundles
您可以通过覆盖Symfony\Component\Templating\Asset\UrlPackage
类来覆盖Symfony资产管理使用的基本网址。
创建一个新的自定义类:
<?php
namespace Acme\DemoBundle\Templating\Asset;
use Symfony\Component\Templating\Asset\UrlPackage as BaseUrlPackage;
/**
* UrlPackage
*/
class UrlPackage extends BaseUrlPackage
{
/**
* {@inheritdoc}
*/
public function getBaseUrl($path)
{
$baseUrl = parent::getBaseUrl($path);
return sprintf('/symfony/%s', $baseUrl);
}
}
然后将新类定义到config.yml
文件中的相应参数:
parameters:
templating.asset.url_package.class: Acme\DemoBundle\Templating\Asset\UrlPackage
也许我们可以将这个UrlPackage
类添加到包中。您觉得向我们提交拉取请求以将其与新的捆绑配置条目集成是否感觉良好?
否则,我会尽快尝试实施。
希望它有所帮助。
感谢您的反馈。