Моя ситуация такова: приложение, над которым я работаю, использует поддомен для определения «кто» является клиентом.то есть: client1.site.com, client2.site.com Это все работает нормально (и я не использую никаких специальных маршрутов).
Теперь, однако, мне нужно поместить свой код в тест' среда.В этом случае, однако, я ограничен одним поддоменом.т.е.: static.testsite.com
Я думал о том, чтобы использовать Zend Routing до такой степени, чтобы я мог преобразовать Запрос следующим образом: static.testsite.com/client1/... или static.testsite.com / client2 /...
Таким образом, первый «параметр» долженбыть именем клиента, за которым следуют стандартные параметры MVC (модуль / контроллер / действие).
Я планирую добавить эту логику маршрутизации в ловушку routeStartup плагина контроллера, доступную только в тестовой среде.
Во-первых, есть ли более простой способ выполнить эту работу, о которой я не задумывался?Во-вторых, если нет, есть ли у кого-нибудь опыт такого рода требований?
В данный момент я экспериментирую с различными маршрутами, предоставляемыми Zend, но до сих пор мне не удавалось (имя клиента сохраняетсястать контролером и т. д.).
Любая помощь очень ценится.Спасибо.
Редактировать: я пытался сделать это безобразно, манипулируя URI запроса объекта запроса.Тем не менее, остальная часть сайта остается без части / clientX / в своих URL, что вызывает дальнейшие проблемы.И обновление всех местоположений с помощью / clientX / portions также не представляется возможным.Поэтому, хотя я могу получить клиента, остальная часть сайта остается неработоспособной, что заставляет меня думать, что маршрут - это единственный путь.
Правка # 2: я получил его, работая со следующим кодом;
// within a Controller Plugin at routeStartup
$oFrontController = Zend_Controller_Front::getInstance();
$oRouter = $oFrontController->getRouter();
$oNewDefaultRoute = new Zend_Controller_Router_Route(
':testClient/:controller/:action/*',
array(
'module' => 'default',
'controller' => 'index',
'action' => 'index',
'testClient' => null,
)
);
$oRouter->addRoute('default', $oNewDefaultRoute);
Однако проблема осталась, поскольку она не затрагивает ни один из существующих URL.Поэтому попытка получить доступ к любому из них приводит к месту без testClient, что вызывает ошибки.Я полагаю, что должно быть принято какое-то решение на основе сеанса после первоначального назначения «клиента».
Если, однако, кто-то знает более элегантный способ сделать это, сообщите мне.Спасибо.