Details
-
Type:
Docs: Problem
-
Status:
Resolved
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 1.8.0
-
Fix Version/s: 1.8.1
-
Component/s: Zend_Controller
-
Labels:None
-
Language:English
Description
Zend_Controller_Router_Route used to treat '@' as a normal character, so I use it like
'user' => new Zend_Controller_Router_Route('@/:user_name/*',
array('module' => $defaultModuleName, 'controller' => 'user')),
it works on zf1.7 with http://example.com/@/your_name.
In 1.8, zf treats '@' as a marker of translated segment, so the above code does not work but throws an exception.
http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.standard.translated-segments
To make it work as same as 1.7, I need to modify strangely like the following.
'user' => new Zend_Controller_Router_Route('@/:user_name/*',
array('module' => $defaultModuleName, 'controller' => 'user'),
array(),
new Zend_Translate('array', array('' => '@'))),
I do not know it's the great way or not, but anyway this behavior change leads a backword-compatibility break,
so that it should be noted in the migrating section in the document.
http://framework.zend.com/manual/en/zend.controller.migration.html
Except mentioning that in the migration chapter, we could also allow escaping special chars (being colon ":" and at "@" in the beginning of a segment). Thus you would be able to use them again without a dirty workaround.