Маршрутизация поддоменов Phalcon

Как подключиться к поддоменам Phalcon:

city1.site.com
city2.site.com
city3.site.com
...
cityN.site.com

город — в базе данных

Я пытаюсь это сделать

$router->add('{subdomain:\w+}.{domain:.+}', array(
'controller' => 'category',
'action' => 'categorySearch'
)
);

но не работает.

0

Решение

Маршрутизатор Phalcon не соответствует поддоменам. Вы должны сопоставить $ _SERVER [‘SERVER_NAME’] с регулярным выражением для создания соответствующих маршрутизаторов.

<?php
$di = new \Phalcon\Di\FactoryDefault();

$di->setShared('router', function() {

// Match subdomain with regular expression
if(preg_match("/^(\\w+)\\.site\\.com$/", $_SERVER['SERVER_NAME'], $matches) === 1) {
$subdomain = $matches[1];
}

// Create a router without default routes
$router = new \Phalcon\Mvc\Router(false);

if (isset($subdomain)) {
// Create routes for subdomains
$router->add('/category', array(
'controller' => 'category',
'action' => 'categorySearch'
));
} else {
// Create routes for main domain
}

return $router;
});

// Retrieve corresponding router at runtime
$di->getShared('router')->handle();
4

Другие решения

может быть, это может помочь вам проблема

$di['router'] = function()
{
$router = new Phalcon\Mvc\Router(false);

switch ($_SERVER['HTTP_HOST'])
{
case 'm.domain.com':
$router->add('/m/xxx/yyy', array(
'controller' => 'xxx',
'action' => 'yyy'
));

//...
break;
default:
$router->add('/xxx/yyy', array(
'controller' => 'xxx',
'action' => 'yyy'
));
break;
}

return $router;
};
0

По вопросам рекламы [email protected]