pet*_*son 14 php zend-route zend-router zend-framework2
我想知道如何在ZF2中翻译一个有参数的网址.
例如:
/{:language_link-schools-:city_link}
Run Code Online (Sandbox Code Playgroud)
我不这样做的原因:
/:language_link-{schools}-:city_link
Run Code Online (Sandbox Code Playgroud)
是因为在某些语言中,例如西班牙语,单词的顺序会发生变化.
我正在使用PhpArray,当我翻译它时,参数不会被替换,因此url呈现为(例如西班牙语):
/:language_link-escuela-:city_link
Run Code Online (Sandbox Code Playgroud)
而不是预期的行为:
/ingles-escuela-miami
Run Code Online (Sandbox Code Playgroud)
编辑:
参数是
:language_link
和:city_link
因此,我们的想法是,在一种语言中,呈现的URL可能是:
/:language_link-schools-:city_link
Run Code Online (Sandbox Code Playgroud)
用另一种语言可能是:
/:language_link-:city_link-school
Run Code Online (Sandbox Code Playgroud)
与您在翻译语句时执行的操作类似:
sprintf($this->translate('My name is %s'), $name) ;
Run Code Online (Sandbox Code Playgroud)
PHP中有一个函数叫做strtr
. 它允许将任何模式转换为值。
根据您的示例,我们可以执行以下操作:
如果字符串是这样的:/:language_link-escuela-:city_link
然后你可以执行以下操作
<?php
$rawUrl = "/:language_link-escuela-:city_link";
$processedUrl = strtr($rawUrl, [
':language_link' => 'es',
':city_link' => 'barcelona',
]);
echo $processedUrl; // Output: /es-escuela-barcelona
Run Code Online (Sandbox Code Playgroud)