Взгляните на sfDomainRoutePlugin - он делает то, что вы хотите. Однако в его текущей версии вы не получаете функциональность Propel или DoctrineRoute, что означает, что вы должны вручную искать клиента на основе параметра subdomain, возвращаемого из плагина. Пример:
приложение / интерфейс / конфигурации / routing.yml
# pick up the homepage
homepage:
url: /
class: sfDomainRoute
param: { module: homepage, action: index }
requirements:
sf_host: [www.example.com, example.com]
# catch subdomains for customers
customer_subdomain:
url: /
class: sfDomainRoute
param: { module: customer, action: index }
приложение / интерфейс / модули / клиент / actions.class.php
public function executeIndex(sfWebRequest $request)
{
// get the subdomain parameter
$this->subdomain = $request->getParameter('subdomain');
// retrieve customer (you have to create the retrieveBySubdomain method)
$this->customer = CustomerPeer::retrieveBySubdomain($this->subdomain);
}
Это всего лишь пример, но я сам использую аналогичный подход, и плагин делает то, что рекламируется. Удачи.
Если вы любите приключения, вы можете взглянуть на Главу 2 в книге «Больше с Symfony». Это поможет вам понять код в sfDomainRoutePlugin.