У меня есть несколько ответов на ваш вопрос. Я думаю, все зависит от того, как вы хотите структурировать свое программное обеспечение Zend Framework.
С моей точки зрения, у вас есть контроллер под названием «Компания». Затем он имеет различные действия, которые включают в себя productOverviewAction() и т. Д.
Итак, вот несколько решений «почти там», а затем я разрешу вашу текущую дилемму. :)
Первый вариант ответа
Вы можете использовать контроллер компании для компании конкретной информации. Возможно, вы сделаете контроллер под названием Product для информации о продукте. Затем вы действительно захотите перейти к чему-то вроде/product/[unique-id]/overview - nice URL. Вот маршрут совпадающее:
$route = new Zend_Controller_Router_Route(
'product/:productCode/:action',
array(
'controller'=>'product'
)
);
Как вы видите, это даже не регулярное выражение, так что он может быть быстро!
Второй возможный ответ
Причина, по которой нужно регулярное выражение, потому что действие не соответствует URL, но сделан из части. Однако, допустим, что вы изменили компании :: productOverviewAction() в компании :: OverviewAction() - вы затем можете использовать этот маршрут:
$route = new Zend_Controller_Router_Route(
'company/:productCode/:action',
array(
'controller'=>'company'
)
);
Однако, я знаю, что это не совсем то, что вы просили ...
The Almost Exact Ответ
не делая изменений в классе маршрутизации, вы можете использовать следующий маршрутизатор:
$route = new Zend_Controller_Router_Route(
'company/:productCode/:action',
array(
'controller'=>'company'
)
);
И затем, поскольку он получает направленность на каждое действие, вы можете проксировать действия в CompanyController. Например:
public function overviewAction()
{
return $this->productOverviewAction();
}
* Примечание: Я не использовал _forward(), чтобы не переотправки (я думаю, что бывает ...)
удачи!
- код продукта all alpha и lower? – Orangepill
Я могу изменить шаблон на [a-zA-Z -] +, но это не проблема –
, и это последний маршрут, добавляемый к маршрутизатору? – Orangepill