Poniżej masz klasę skleconą z tutoriali Fabiena, a która zamienia subdomenę na parametr. Tu akurat 'username' , więc sobie zmień
W routingu używasz tej klasy tak:
Cytat
homepage:
url: /test
class: sfDomainRoute
param: { module: main, action: test}
<?php
class sfDomainRoute extends sfRequestRoute
{
public function matchesUrl
($url, $context=array()) {
if(false===$retval=parent::matchesUrl($url, $context))
{
return false;
}
$retval['username']=$this->getSubdomain($context);
return $retval;
}
protected function getSubdomain($context)
{
$parts=explode('.', $context['host']); return $parts[0];
}
public function matchesParameters
($params, $context=array()) {
unset($params['username']);
return parent::matchesParameters($params, $context);
}
public function generate
($params, $context=array(), $absolute=false) {
$subdomain=isset($params['username']) ?
$params['username'] : false; unset($params['username']);
if($subdomain && $subdomain!=$this->getSubdomain($context))
{
$url=parent::generate($params, $context, $absolute);
return $this->getHostForSubdomain($context, $subdomain).$url;
}
return parent::generate($params, $context, $absolute);
}
public function getHostForSubdomain($context, $subdomain)
{
$parts=explode('.', $context['host']); $parts[0]=$subdomain;
$protocol='http'.(isset($context['is_secure']) && $context['is_secure'] ?
's' : '');
return $protocol.'://'.$host;
}
}
?>
Pozdrawiam