Параметры маршрута ZF2 с косой чертой
Можно ли собрать маршрут с параметрами, содержащими прямые косые черты?
Конфигурация:
'someroute' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => 'someroute/:path',
'defaults' => array(
'controller' => 'Controller',
'action' => 'index'
),
'constraints' => array(
'path' => '(.)+'
)
)
)
Контроллер:
$path = 'some/subdirectory';
$this->url('someroute', array('path' => $path));
Приводит к:
http://host.name/someroute/some%2Fsubdirectory
3
Author: blackbishop, 2013-05-24
3 answers
Использование rawurldecode()
в представлении, конечно, решает эту проблему.
2
Author: machete, 2015-04-16 16:08:16
Просто используйте тип маршрута regex
:
'path' => array(
'type' => 'regex',
'options' => array(
'regex' => '/path(?<path>\/.*)',
'defaults' => array(
'controller' => 'explorer',
'action' => 'path',
),
'spec' => '/path%path%'
)
)
1
Author: MonkeyMonkey, 2015-04-16 16:09:05
У меня была похожая проблема, поэтому я публикую найденное решение с Zend 3 в своем проекте.
По умолчанию компонент маршрутизации Symfony/Zend требует, чтобы параметры соответствовали следующему регулярному выражению: [^/]+. Это означает , что разрешены все символы, кроме /.
Вы должны явно разрешить /быть частью вашего заполнителя, указав для него более разрешительное регулярное выражение:
'type' => Segment::class,
'options' => [
'route' => '/imovel[/:id][/:realtor][/:friendly]',
'constraints' => array(
'friendly' => '.+',
'id' => '[0-9]+',
'realtor' => 'C[0-9]+'
),
'defaults' => [
'controller' => Controller\PropertyController::class,
'action' => 'form'
]
]
В принципе, вы можете разрешить все символы, и затем проверьте/попробуйте поймать/проверить в действии.
1
Author: Claudionor Oliveira, 2017-09-21 20:03:53