В настоящее время я использую статические маршруты, но мне было интересно, если вы можете иметь статические и динамические маршруты вместе. Поэтому я использую это:zf2 корень url статический и динамический
'contact' => array(
'type' => 'literal',
'options' => array(
'route' => '/contact',
'defaults' => array(
'controller' => 'Application\Controller\IndexController',
'action' => 'contact',
),
),
),
, и я хотел бы использовать что-то вроде этого вместе с этой
'contact' => array(
'type' => 'segment',
'options' => array(
'route' => '/:curated_url',
'defaults' => array(
'controller' => 'Application\Controller\IndexController',
'action' => 'curated',
),
),
),
Динамический маршрут будет принимать все, хотя и угнать статические маршруты. Итак, я смотрел на использование маршрутизации действий, но curated_url
мог быть чем угодно.
Можно ли использовать динамический вариант и иметь значения по умолчанию, где, если его нет, тогда он будет искать в базе данных, чтобы увидеть, находится ли он там?
********** ********** EDIT
Так вот что я раскручивается в настоящее время, и она работает, но я знаю, что есть лучший Кстати, я просто не знаю, что лучше.
router.config.php
'curated-url' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/:url',
'defaults' => array(
'controller' => 'Application\Controller\IndexController',
'action' => 'custom',
),
),
),
IndexController.php
/*
* Special kind of special
*/
public function customAction()
{
$params = array();
$type = $this->params('url');
if ('contact' == $type) {
$params = $this->contactAction($this->getRequest());
} else if ('discover' == $type) {
$params = $this->discoverAction();
} else if ('how-it-works' == $type) {
$params = $this->howItWorksAction();
} else if ('privacy-policy' == $type) {
$params = $this->privacyPolicyAction();
} else if ('questions' == $type) {
$params = $this->questionsAction();
} else if ('terms-of-use' == $type) {
$params = $this->termsOfUseAction();
} else if ('volunteer' == $type) {
$params = $this->volunteerAction();
} else {
$params = $this->curatedAction($type);
$type = 'curated';
}
$view = new ViewModel($params);
$view->setTemplate('application/index/' . $type);
return $view;
}
Таким образом, ограничения ограничивают только то, что можно сопоставить, я хочу иметь свои маршруты по умолчанию; '/ about-us','/contact', '/ privacy-policy' и т. д. Но также имеют свои динамические маршруты вместе, поэтому мой пользователь создал маршруты, которые в этом случае будут именами групп (т.е. -'/dev-group', '/ just-another-group' также они не всегда будут иметь группу в конце их). Динамически созданные маршруты будут в базе данных, тогда как мои маршруты по умолчанию в настоящее время находятся в статических файлах. – gmaniac
не уверен, что я понял, но я использую его, чтобы передать что-то вроде /type/id/free-text-for-seo.html, так например: /group-name/1/administrator.html, если это то, что вам нужно, чтобы вы могли играть с ограничениями, а затем в действии, которое вы проверили бы, является ли id действительным – peterpeterson
Я разместил обновление, которое может объяснить, что я пытаюсь сделать – gmaniac