2009年12月07日
Symfony と WordPressの連携の際に重なってしまう関数として esc_js()がある。
Symfonyのコアファイルのlib/helper/EscapingHelper.phpで定義されている。
これをdefine(’ESC_JS’, ‘esc_js’);とともにコメントアウトしてしまえば大丈夫なのだけど、こうするとコアファイルをいじることになるので、アップグレードの時に面倒になる。
ほんとはコアファイルに手をいれずに変更できればいいのだけど、EscapingHelper.phpの読み込みはlib/view/sfPHPView.class.phpの44行目あたりの
$helpers = array_unique(array_merge(array('Helper', 'Url', 'Asset', 'Tag', 'Escaping'), sfConfig::get('sf_standard_helpers')));
で指定されていて、settings.ymlのstandard_helpersで指定しても追加されるだけになってしまう。
と思いきやlib/config/sfApplicationConfiguration.class.phpをみるとgetHelperDirsでhelperを読み込むディレクトリをとってきてる。というわけでプロジェクトディレクトリのapps/front/lib/helper/にEscapingHelper.phpをコピーして該当行をコメントアウトすることで対応できた。
ただ、このファイルがバージョンアップしたときには、ここにコピーし直して同じ作業を擦る必要があるので注意しておかないとまずそう。
タグsymfony WordPress 未分類
コメントはありません。 »
2009年11月30日
久々に書きますが、時間がないのでメモレベルで。
いつか時間とニーズがあればWordPressとSymfonyの連携の方法なんかも書いてみたいと思ってます。
たとえば、symfonyをabcというディレクトリに入れたとして、
apps/front/config/factories.yml
で
inc:
routing:
param:
context:
prefix: '/shop'
のようにして
symfony以外のプログラム(たとえばwordpressとか)では、ファイルの最初に
< ?php
//autoload symfony core class
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
sfCoreAutoload::register();
// add autoload my project class
$dir = dirname(__FILE__).'/../';
$sfSimpleAutoload = sfSimpleAutoload::getInstance();
$sfSimpleAutoload->addDirectory($dir);
$sfSimpleAutoload->register();
$configuration = ProjectConfiguration::getApplicationConfiguration('front', 'inc', true);
sfContext::createInstance($configuration);
?>
とかいうのを書いとく。
そうすれば、たとえばテンプレートで
< ?php
echo sfContext::getInstance()->getController()->getPresentationFor('parts','sidebar');
?>
とかしたときに、url_for()とかで指定したリンク先が
/index.php/test/aaa
とかならずに
/abc/test/aaa
となってくれる。
タグインストール・設定 symfony 未分類
コメントはありません。 »