Zend 框架为啥这个带有西班牙字符的 url 不起作用?

Posted

技术标签:

【中文标题】Zend 框架为啥这个带有西班牙字符的 url 不起作用?【英文标题】:Zend framework why this url not working which has a spanish character?Zend 框架为什么这个带有西班牙字符的 url 不起作用? 【发布时间】:2016-03-11 19:29:32 【问题描述】:

当我以http://www.example.com/Formación 访问网址时 那么路由应该匹配,但它不起作用,因为我有一个字符ó,如何使这个ó西班牙字符与ZF中的以下路由兼容?

$route = Http\Segment::factory(array(
  'route' => '/Formación',  //<<<<< this character must be used: ó
  'defaults' => array(
    'controller' => 'Application\Controller\Trainingsignup',
    'action' => 'index'
  ),
));
$router->addRoute('traininges', $route, null); 

编辑:也失败了

  'constraints' => array(
      'controller' => '[a-zA-ZóäöüÄÖÜß][a-zA-ZóäöüÄÖÜß0-9_-]+',
      'action'     => '[a-zA-ZóäöüÄÖÜß][a-zA-ZóäöüÄÖÜß0-9_-]+',
  ),   

编辑:也失败了

  'constraints' => array(
      'controller' => '/^\pL[\pL _.-]+$/u',   //or /[\pL]+/u
      'action'     => '/^\pL[\pL _.-]+$/u',   //or /[\pL]+/u
  ), 

【问题讨论】:

阅读这篇文章***.com/questions/15634913/… 我认为这与我的问题不同,他在谈论动作,但在我的情况下是静态控制器。 还有this one @Wilt: 这也不是有效的参考,因为他没有使用 "Http\Segment" 而是 'type' =&gt; 'MyNamespace\Mvc\Router\Http\UnicodeRegex', 。我的是一个静态网址,其他人使用的是动态的。 所有示例都使用动态捕获,我有静态“/Formación”,但其他人喜欢/Formación/:itsalready-toolate-here-because-my-character is static in first block 【参考方案1】:

我诚实的回答是:不要这样做 - 请只使用 ASCII。

但如果你真的想要:How to set a (UTF8) modifier for RegEx of a RegEx Route in Zend Framework 2?

【讨论】:

以上是关于Zend 框架为啥这个带有西班牙字符的 url 不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

带有 Zend 框架的巨大 mysql 表

从 zend 框架上 apache 2.4.6 的 url 中删除 index.php

Zend 框架 - 为啥我应该使用数据映射器/Db_Table_Row?

使用 zend 框架创建动态侧边栏的最佳实践

从 zend 框架 1.12 中的 url 中删除 index.php

Zend 框架项目 - 日历:需要为每个用户分别提供带有事件的网络日历(如谷歌日历)