別なappのroutingやpartialを読み込めるsfAppChange

symfonyで1つのプロジェクトでアプリケーションを複数作って
アプリケーション同士でリンクをしたりする方法。

別なappのroutingやpartialを読み込めるsfAppChange
アプリケーション間のリンクを作る方法


2011/9/12追記
sfAppChangeを使うと、suffixやアプリケーションを別のディレクトリに置いた時など
うまく動かなかった。
下記のように修正。

AppChange.class.php

private function _getURL($format, $dir=false, $show_controller=true,$protocol=false){
$env = sfContext::getInstance()->getConfiguration()->getEnvironment();
if($env == 'prod'){
$phpname = ($show_controller) ? '/'.$this->app.'.php' : '';
}else{
$phpname = '/'.$this->app.'_'.$env.'.php';
}

$url = $phpname;
if($protocol===true){
$protocol = 'http';
}
if($protocol){
$url = $protocol.'://'.sfContext::getInstance()->getRequest()->getHost().$url;
}

if($dir){
$url .= "/".$this->app;
}

if(!isset(self::$routings[$this->app])){
$config = new sfRoutingConfigHandler();
$routes = $config->evaluate(array(sfConfig::get('sf_apps_dir').'/'.$this->app.'/config/routing.yml'));
$routing =new sfPatternRouting(new sfEventDispatcher());
$routing->setRoutes($routes);
self::$routings[$this->app] = $routing;
}

$config = sfFactoryConfigHandler::getConfiguration(sfContext::getInstance()->getConfiguration()->getConfigPaths('config/factories.yml'));
$options = $config['routing']['param'];

$routing_old =sfContext::getInstance()->getRouting();
sfContext::getInstance()->set('routing',self::$routings[$this->app]);
$ret = $url.url_for($format).$options['suffix'];
sfContext::getInstance()->set('routing',$routing_old);
return $ret;
}


引数に $dir を追加して、$dirがtrueの時に$appnameをディレクトリに指定する。
スポンサーサイト

トラックバック

コメント

コメントを残す

Secret


プロフィール

U2K

Author:U2K
いろいろプログラムに関しての覚え書きをちょくちょくと書いていきます。

オススメ










オススメ

忍者AdMax

u2k on Twitter

最近の記事