symfony

sfFormをActionのバリデータとして使う

バリデータ用のformクラス作成。バリデートに関する実装はこちら class validateForm extends sfForm { public function configure() { $this->setValidators(array( 'param' => new sfValidatorString(array('required' => true), array('required' => 'is …

modelのfind()にnullを入れてもエラーにはならない

modelのfind()にnullやfalseが入ってしまった場合、どうなるかのテストtest/unit/model/HogeTest.php find($param); echo $a ? 'exist' : 'none'; echo "\n"; } test(1); test(''); test(null); test(false); test('hoge'); 実行結果は以下、nullやfalseを入…

symfony generate:moduleで生成されるスケルトンを変更する

defaultではsymfonyフレームワーク内にあるskeletonディレクトリを基に作成されるが、projectのdataディレクトリにskeleton/moduleを置くとそちらを参照するようになります。 sfGenerateModuleTask.class.phpより if (is_readable(sfConfig::get('sf_data_di…

schema.ymlに合わせてDBも更新する

直接SQLを打たなくとも、symfony doctrine:migrate でできました。schema.ymlを更新したあと $ symfony doctrine:generate-migrations-difflib/migration/doctrine/1313561518_version1.php のような差分クラスファイルができる ※modelクラスを生成した後だ…

factories.ymlの値を取得する

.../apps/frontend/config/factories.yml all: routing: class: sfPatternRouting param: generate_shortest_url: true extra_parameters_as_query_string: true suffix: .html request: class: sfWebRequest param: relative_url_root: "/hoge"$app = 'fron…

例外が起きる事をテスト

// test/unit/hogeTest.php true)); ←$t->fail()は通らないからテスト数に加算しない try { <<例外が起きる処理>>; $t->fail('通っちゃダメ'); } catch (sfException $e) { ←catchしたい例外クラスを指定 $t->pass('catch exception'); echo $e->getMessage(…

factories.ymlの値を取得

factories.yml all: routing: class: sfPatternRouting param: generate_shortest_url: true extra_parameters_as_query_string: true suffix: .html request: class: sfWebRequest param: relative_url_root: "/mobile"特定applicationの設定は以下で取得で…

sfFormでバリデータをなしにする

フォームクラスでこんな風にしても怒られるので... $this->validatorSchema['name'] = null; →「A field must be an instance of sfValidatorBase.」unset($this->validatorSchema['name']); →「Unexpected extra form field named "name".」sfValidatorPass…

sfFormでvalidateエラーを洗い出す

isValid()が偽になった時、などにtemplateにて getErrorSchema() as $key => $err) { echo $key.'='.$err.'<br />'; } ?> ↓↓↓ //name=入力してください。 //email=入力してください。 //password=入力してください。 //password_confirmation=入力してください。 /…

sf test 結果をカラー表示

new lime_test(null, array('force_colors'=>true))を追加 //$browser = new sfTestFunctional(new sfBrowser()); $browser = new sfTestFunctional(new sfBrowser(), new lime_test(null, array('force_colors'=>true)));$ php hogeActionsTest.php # get /…

デフォルトでエスケープしている場合のタグ除去

タグを除去して出力したい、と思いpreg_replace()であれこれやろうと考えたが、strip_tags()という便利な関数があった。しかし、templateで strip_tags($class->getHoge());と、やってもタグが消えない。。。。こうやったらOKでした↓↓↓ strip_tags($class->g…

vim-symfonyを導入

https://github.com/soh335/vim-symfony 上記URLにて、以下をDownloadしてみました。「soh335-vim-symfony-v0.10-0-gcf34106.zip」gitで取得する場合はコチラ↓↓↓ $ git clone https://github.com/soh335/vim-symfony.git ※(2011/6/16現在)「SSL certificate …

特定のモジュール、アクションでのみdebugバーを表示しない

やり方を聞かれたので試してみました。特定モジュールの場合 public function preExecute() { sfConfig::set('sf_web_debug', false); }特定アクション public function executeXXX(sfWebRequest $request) { sfConfig::set('sf_web_debug', false); }※共にa…

symfonyでエスケープ処理

templateに渡った変数をデフォルトでエスケープする設定(XSS対策など) setting.yml # Output escaping settings escaping_strategy: trueこれでエスケープして出力されます echo $class['hoge']; // 例)<b>aaa</b><br />あえてエスケープしない出力(タグを許す場合な…

ネームスペースを指定してGet

debugツールバー User▼ attributeHolder: sfGuardSecurityUser: { user_id: '9' } symfony/user/sfUser/attributes: { }getする時は、第3引数にnamespaceを入れる $user = sfContext::getInstance()->getUser(); $user->getAttribute('user_id', null, 'sfG…

独自Viewクラスを設定する

例)frontendアプリケーションに独自クラスmyPHPViewを設定lib配下にsfPHPViewを継承した独自クラスを作成 /apps/frontend/lib/view/myPHPView.class.php

view.ymlの上書き時、既に読み込まれているファイルを除去

単にこのように書くと、追加されるだけなので... stylesheets: [sub.css]「-(ハイフン)」を付けると除去できます stylesheets: [-/css/form.css, -main.css, sub.css]

AdminGeneratorで生成されるファイル

generate-adminをしてできたソースをカスタマイズしたくて元ファイルを見たかったのだが、見つからず。 しばらく悩んでいたところ...エラーメッセージ見たらわかりました。 Notice: Undefined variable: xxxx in /var/www/admin/hoge/symfony/cache/admin/de…

generate-adminの検索フォームにidを追加

List画面に標準で付いてくるFilters(検索ボックス)にはidカラムがありません。 ※Base[tableName]FormFilter.class.phpを参照そのままBaseに追加しても動きますが、オーバーライドしてやれば追加できます。[tableName]FormFilter.class.php public function…

機能テストでカラー表示

lime_testの第2引数にオプションを指定 //$browser = new sfTestFunctional(new sfBrowser()); $browser = new sfTestFunctional(new sfBrowser(), new lime_test(null, array('force_colors'=>true)));

機能テスト

moduleのテストをする際、毎回moduleのURLを叩いてブラウザ確認をするのは大変。 そこでtestフレームワークです。個別に実行 $ php test/functional/[app名]/[module名]ActionsTest.phpもしくは $ ./symfony test:functional [app名] [module名]Actions実行…

Doctrineアクセサのオーバーライド

開発中、ブラウザが下記エラー表示をしてしばらく悩んだ。。 Proxy Errorapacheのerror.logを見ると [notice] child pid 8942 exit signal Segmentation fault (11)上記で調べてもなかなか糸口がつかめず。。。 他のVirtualHostのURLを確認したら正常に表示…

symfonyのactionでログ出力

sfContext::getInstance()->getLogger()->debug("message");version 1.2.9

sfFormの初期値設定

actionでフォームをnewする際の引数とするか、form内で設定するか、などの方法があるaction.class.php public function executeForm(sfWebRequest $request) { $this->form = new XXXForm(array('id'=>'default')); }XXXForm.class.php class XXXForm extend…

オブジェクトのメソッドを確認

オブジェクトに定義されているメソッド名が知りたい場合、直接定義されているファイルを覗いてもよいのですが、PHPでブラウザ表示する事もできます。PHP5から採用されているReflectionを利用します。例)symfonyのactionにて、controllerが持っているメソッ…

input_tagでtypeを書き換える

input_tag ($name, $value = null, $options = array()) デフォルトではtype=textとなっているがoptionを書き換える事で様々なtypeにカスタマイズできる 例)buttonタグにしてonclickアクションを実行させる input_tag('hoge', 'ボタン', array('type'=>'but…

既存DBからインポート(schema.yml作成)

doctrineの場合 ./symfony doctrine:build-schemadatabases.ymlも設定しておく [databases.yml] all: hoge: # class: sfPDODatabase class: sfDoctrineDatabase param: dsn: mysql:dbname=hoge;host=localhost username: fuga password: xxxxxxxx persistent…

SMTP Error: The following recipients failed: xxx@xxx.co.jp

SMTP Error: The following recipients failed: hoge@example.com→まずはhoge@example.comにメール送信できるか確認してみる ※symfonyのsfMailでは文字が大文字になっている場合、Exceptionに入るらしい [symfony 1.0.9]

alias設定

例)hogeをcdコマンドと同じに alias hoge=cdこれで直ちにhogeでcdコマンドの代用ができます。 ただし、ターミナルを閉じると効果はなくなります。 毎回設定するのが面倒なら自分の環境にセットしておく 例)symfonyコマンドをsfに ~/.bashrc # .bashrc # So…

DoctrineのSQL文を確認

Doctrine_Query::create()でexecute()などをする前の値で確認できます。 $query = Doctrine_Query::create() ->select('item_id') ->from('UserItem') ->where('user_id = ?', $userId); $items = $query->execute(); ←コチラだとobj化している sfContext::g…