Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ezplatform url(ez_路由未映射到域的路由_Php_Symfony_Ezpublish_Ezplatform - Fatal编程技术网

Php ezplatform url(ez_路由未映射到域的路由

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

我有一个简单的网站,基础语言是英语与德语翻译

以下是ezplatform.yml中的站点访问设置

# 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