Здесь есть сообщение в блоге об этом здесь:
Для этого есть плагин :
И есть некоторые посты, объясняющие это:
Чтобы проложить маршрут к вашему интерфейсу и к бэкэнду, есть три простых шага:
1. Добавьте к своей конфигурации бэкэнда следующие два метода
Эти методы читают внутреннюю маршрутизацию и используют ее для генерации маршрутов. Вам нужно будет предоставить ссылку на него, так как php не знает, как вы настроили свой веб-сервер для другого приложения.
.
// apps/backend/config/backendConfiguration.class.php
class backendConfiguration extends sfApplicationConfiguration
{
protected $frontendRouting = null;
public function generateFrontendUrl($name, $parameters = array())
{
return 'http://frontend.example.com'.$this->getFrontendRouting()->generate($name, $parameters);
}
public function getFrontendRouting()
{
if (!$this->frontendRouting)
{
$this->frontendRouting = new sfPatternRouting(new sfEventDispatcher());
$config = new sfRoutingConfigHandler();
$routes = $config->evaluate(array(sfConfig::get('sf_apps_dir').'/frontend/config/routing.yml'));
$this->frontendRouting->setRoutes($routes);
}
return $this->frontendRouting;
}
// ...
}
2. Теперь вы можете сделать ссылку на ваше приложение следующим образом:
$this->redirect($this->getContext()->getConfiguration()->generateFrontendUrl('hello', array('name' => 'Bar')));
3. Поскольку писать это немного утомительно, вы можете создать помощника
function link_to_frontend($name, $parameters)
{
return sfProjectConfiguration::getActive()->generateFrontendUrl($name, $parameters);
}
sfCrossLinkApplicationPlugin делает это, вот, но немного проще, вы могли бы использовать синтаксис, подобный следующему:
<?php if($sf_user->isSuperAdmin()):?>
<?php link_to('Edit Blog Post', '@backend.edit_post?id='.$blog->getId()) ?>
<?php endif ?>