symfony

テスト時のDoctrine::loadData

テストデータをロードする方法として、 http://www.symfony-project.org/jobeet/1_4/Doctrine/ja/08#chapter_08_sub_663c3500c2c8667de5989255974fa8588a2f30e2

アドミンジェネレーターではCredentialを設定しておく

管理ページでアドミンジェネレーターを使う場合には、 入る権限がない人に対して、万が一にでも見せちゃいけない項目には、Credentialを設定しておく。 generator: param: fields: mail_address: {name: メールアドレス, credentials: [admin]} fieldsに設定…

キャッシュ

symfonyには組み込みでキャッシュの仕組みがあったのを今日はじめて知った。。。 http://symfony-doc-ja.googlecode.com/svn/branches/1.0/html/book/12-Caching.html http://symfony.xrea.jp/1.0/askeet/19.html http://blog.symfony.jp/2007/10/12/cache_t…

JavaScriptとCSSの順番を変える

基本はJavaScript→CSSの順になっている。 たまに、表示が崩れる場合があって、どうしても順番を変えたい時がある。 HTMLに追加しているのはsfCommonFilterで行われている。 execute(); // execute this filter only once $response = $this->get…

コンポーネントスロットで表示/非表示

symfony1.0系にて。module単位でHTMLの一部分の表示/非表示をコンポーネントスロットを使ってやろうとすると、 うまく動いてくれなくて困ってた。 やりたいことはこんな感じ layoutにてinclude_component_slot() moduleAでは表示 moduleBでは非表示 できるだ…

sfThumbnailPluginのmaxHeightがmaxじゃない

sfThumbnailPluginのコンストラクタはこうなってる thumbWidth = floor($ratio * $sourceWidth); $this->thumbHeight …

propel-load-data時のmemory_limit

たくさんのデータをpropel-load-dataで入れようとすると、メモリオーバーになってしまう。 propel-load-dataで読み込むYAMLにはPHPのコードが書けるので、YAMLの先頭で と書いちゃえばいい。

sessionタイムアウト

sessionの期限に関する設定は、PHPのsession.gc_maxlifetimeだけだと思って、 config/php.ymlで変えてみたが、ログアウトしてしまう。apps/(myapp)/config/settings.ymlにあるtimeoutも変えなければいけない。初期値は、 session.gc_maxlifetime: 1440 sf_ti…

スタイルシートを再読み込みさせるために

<link rel="stylesheet" type="text/css" media="screen" href="/css/main.css?hogehoge" /> みたいにしてあげると、hogehogeが変わると取り直してくれる。やり方としては、 apps/(myapp)/config/view.ymlに直接書いちゃう。 default: stylesheets: [main?hogehoge] 大げさ?にやる場合は、sfWebResponseを継承して、addStylesheetメソッドを上書きし</link>…

actionでpartialを使う

symfony/helper/PartialHelper.phpを見るとわかる。 initialize(sfContext::getInstance(), 'default', '_partial', ''); $retval = $view->render(array('hoge' => 'fuga')); }

HTML以外での出力

自分用のメモとして。 HTML以外で出力する場合のactionでの方法。 setLayout(false); // layoutを無効に $this->getResponse()->setContentType($co…

moduleのアクセス順でエラーになった

原因はわかった。解決はした。 でも根本的な解決法はわからない。YAMLパーサにsyckを使っていると、

moduleのアクセス順でエラーになる

これから調べる。 調べた → moduleのアクセス順でエラーになった - hpoolの日記 symfony ccをした後に、アクセスするmoduleの順番によってエラーになったりする。 abcモジュール(これがエラーになる) xyzモジュール(エラーにならない) この2つのmoduleがある…

タイトルの変更・追加

action内では設定(変更)しかできない。 既存のtitleに追加をする場合には、テンプレートで行う。 たとえばここのページの設定をsymfonyであらわす場合はこうなる # apps/myapp/config/view.yml default: http_metas: content-type: text/html metas: title: …

Deliciousがsymfonyである証拠

http://delicious.com/sf/sf_default/images/icons/ok48.png

ヘルパーの引数がエスケープされる

例えばinputタグの場合。 普通はこんな感じで使う。 getParameter('name'), array('maxlength' => 128))?> 3つ目の引数の$optionsを直接書かない場合。 エスケープされてエラーになってしまう。 getParameter('name'), $user->getHtmlOptions())?> こうする…

filter VS view_class

ケータイサイト用に文字コードを変換して出力してる。 やり方は色々ある。 filterでやる response->setContent(文字コード変換(response->getContent))でやってる。 view_classでやる executeでob_startして、コールバック関数で変換してる。 なんか比べてみ…

havingでaliasは使えない

↓な感じでhavingにaliasを使おうとしたけどエラーになった。 SELECT MAX(IF(xxx='abc', yyy, 0)) as x1 FROM user GROUP BY id having x1 > 2; havingを使う場合、こんな感じで使う。 getNewCriterion(BasePeer::ID, 5, Criteria::LESS_THAN); $crit->addHav…

バリデータ

symfonyのバリデータってPOSTメソッドじゃないとエラーにするとかできないのかな。 forward404Unless($this->getRequest()->getMethod() == sfRequest::POST); } else { $this->forwardUnless($this->getRequest()->getMethod() == sfRequest::POS…

batchまとめ

自分のまとめとして。 http://d.hatena.ne.jp/hpool/20080305/1204681425 http://d.hatena.ne.jp/hpool/20080318/1205833293 http://d.hatena.ne.jp/hpool/20080422/1208837336 apps/myapp/config/factories.ymlに追加する clibatch: controller: class: sfF…

arg_separator.output

使っているYAMLパーサによって、設定値が変わってしまう。 data/symfony/config/php.yml set: magic_quotes_runtime: off log_errors: on arg_separator.output: | &amp; 元々使われているSpycだと、 string '&amp;' (length=5)となるが、syckの場合だと、 s…

MySQL関数の組み合わせ

うまい例を出せてないですが。。。 SELECT MAX(IF(xxx='abc', yyy, 0)) FROM user GROUP BY id; こんなSQLをCriteriaのaddSelectColumnでやるには、 xxxやyyyには定数(UserPeer::XXXなど)を使うとうまく動かない。BasePeer::createSelectSqlでは MAX(books.p…

escapeヘルパー

symfonyでのescapeのhelper(helper/EscapingHelper.php)では以下の処理が実行される。

sfAdvancedLoggerPlugin

http://trac.symfony-project.com/wiki/sfAdvancedLoggerPlugin 設定の仕方がよくわからなかった。 とりあえずこんな風にしてみる。 dev メールは送らない ログはすべてとる dev以外 メールを送る ログはnoticeまで(info,debug以外)を対象に config/logging.…

sf/sf_admin/css/main.cssのフォント

なんかザ外国って感じがしたので、上書き web/css/main_ja.css body, td { font-family: "Osaka", "MS Pゴシック", Arial, Verdana, sans-serif !important; font-size: 12px !important; } #sf_admin_container td { font-family: "Osaka", "MS Pゴシ…

routing

sfWebController(sfFrontWebController) sfWebRequest が必須。cliではsfConsole(Controller/Request)なので、controller->genUrlはできない。 どうにかしたらできないもんかと思ってしまった。そもそも「routingだからwebなんだ」ってことで、 できないかな…

実装

とりあえず、いろいろいい実装方法がわからないところがあるので以下に列挙 actionsがでかくなる actionごとに分けた場合のpreExecuteはどうするのか(調べてない) validateメソッドを色んなactionで使いたいとか 違うmodule、違うprojectで同じ(もしくは似…

templateの存在確認

ActionでsetTemplateをする時に、そのTemplateの存在を確認したい。 $this->getModuleName(), 'actionName' => $this->getActionName(), 'viewName' => sfView::SUCCESS, ); …

AdminGenerator

sfAdvancedAdminGeneratorPlugin http://trac.symfony-project.com/wiki/sfAdvancedAdminGeneratorPlugin と sfPropelAdminGeneratorPlusPlugin http://develop.ddo.jp/new-tech/php/framework/symfony/plugin/sfpropeladmingeneratorplusplugin が合わさる…

TortoiseSVNとsvn:externals

TortoiseSVNで作業する人がいた場合に、externalsを設定しているとめんどくさいことになった。 チェックアウト時に「外部参照を除外する」にチェックを入れるだけ! では済まなかった。その後普通に右クリック→「SVN 更新」をするとexternalsも取得しにいっ…