Php ezplatform url(ez_路由未映射到域的路由
我有一个简单的网站,基础语言是英语与德语翻译 以下是ezplatform.yml中的站点访问设置Php ezplatform url(ez_路由未映射到域的路由,php,symfony,ezpublish,ezplatform,Php,Symfony,Ezpublish,Ezplatform,我有一个简单的网站,基础语言是英语与德语翻译 以下是ezplatform.yml中的站点访问设置 # Siteaccess configuration, with one siteaccess per default siteaccess: default_siteaccess: en list: - en - de groups: site_group: - en - de
# Siteaccess configuration, with one siteaccess per default
siteaccess:
default_siteaccess: en
list:
- en
- de
groups:
site_group:
- en
- de
match:
URIElement: 1
# System settings, grouped by siteaccess and/or siteaccess group
system:
site_group:
api_keys: { google_maps: "xxx" }
cache_pool_name: '%cache_pool%'
var_dir: var/site
translation_siteaccesses: [de, en]
de:
languages: [ger-DE, eng-GB]
en:
languages: [eng-GB]
default:
content:
很好,访问localhost:8000
显示英语内容,而localhost:8000/de
显示德语内容
然后,我构建了一个简单的语言切换器:
<ul>
<li>
<a href="{{ url( ez_route( null, {"language": "ger-DE"} ) ) }}" {% if ezpublish.siteaccess.name == 'de' %}class="inactive"{% endif %}>
Deutsche
</a>
</li>
<li>
<a href="{{ url( ez_route( null, {"language": "eng-GB"} ) ) }}" {% if ezpublish.siteaccess.name == 'en' %}class="inactive"{% endif %}>
English
</a>
</li>
</ul>
对于英文翻译,我在英文的url中得到一个/。我们正在使用此matcher配置,它工作正常:
ezpublish:
siteaccess:
match:
Compound\LogicalAnd:
cro:
matchers:
Map\URI: { cro: true }
Map\Host: { '%site_domain%': true }
match: cro
Map\Host:
'%site_domain%': eng
请注意,我使用的是我在app/config/parameters.yml
中定义的%site\u domain%
参数。您也可以这样做,也可以使用硬编码值
缺点是,您需要将所有新的siteaccess添加到
component\LogicalAnd
matcher中的列表中,但是如果您有一个简单的站点,有几个siteaccess,我想应该没问题。只是一个不太好的解决方法;如果您知道eng GB将保留默认的siteaccess,为什么不简单地定义
?因为s只有到主页的路径。我需要切换语言并返回到同一页面,例如“…com/somepage”还有什么需要添加的吗?我将您的匹配从cro
和eng
更改为en
和de
,但结果是Uncaught Symfony\Component\DependencyInjec>中的缓存清晰结果tion\Exception\ParameterNotFoundException:您请求了一个不存在的参数“site\u domain”.in/mnt/4E6E45D36E45B48D/Work/privatezimmer/vendor/symfony/symfony/src/symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php:84
匹配确实有效..但与“%site\u domain%”关键字不匹配。当我硬编码值时可以,但在其他方面不行。我和另一个人在这个网站上工作,我们都有不同的dev URL,当然还有另一个用于生产的URL。似乎神奇的“%site\u domain%”将是完美的,否则我将不得不为所有站点访问硬编码匹配。对不起,我应该指定%site\u domain%
是一个Symfony DIC参数,我在app/config/parameters.yml
:)我已经更新了anwser以反映这一点。我添加了一个拉取请求和一个新的指南,也许你可以看看,看看它是否离目标不远:在那里留下一条评论:)
ezpublish:
siteaccess:
match:
Compound\LogicalAnd:
cro:
matchers:
Map\URI: { cro: true }
Map\Host: { '%site_domain%': true }
match: cro
Map\Host:
'%site_domain%': eng