symfony

data-load時の文字化け対策

synfony 1.4で 「symfony doctrine:data-load をしたら文字化けする」 と同僚に言われ。 問題はテーブル生成時にUTF8を扱うようになっていないためらしい。config/databases.ymlのデータベース接続定義で以下を追加する。 encoding: utf8 attributes: defaul…

エスケープしたくない時

変数に格納された文字列をhtmlタグを有効にした状態で出力したい時、以下の2つの方法があるらしい。 $sf_data->getRaw() $sf_data->getRaw('変数名'); メソッドの引数にESC_RAWを与える $変数の中身を保持しているクラス->get変数名(ESC_RAW); 前者が上手く…

テーブルにはないデータをバリデーションチェックしたい時

テーブルに入っていないデータをフォームオブジェクトに突っ込んでisValid()しても Unknown record property / related component と言われてしまう。そんなときは、モデルのconstruct()でmapValueすれば良い。 ※下の例は、テーブルに含まれていないisReadRu…

バリデーションの効かせ方

概要 よくある 「入力→確認→完了」 のような処理の場合。 フォームオブジェクトのバリデーションを用いて入力項目をチェックする。 ハマったところ $form->isValid(); とすればバリデーション処理が走ってくれるが、これを確認画面で行なっても、入力項目に…

今日の振り返り

ファイルのアップロード sfWidgetFormInputFileを使って実装。 formオブジェクトはバリデーションのみに使う テンプレート側では、formタグに「enctype="multipart/form-data"」を追記(←忘れがち) 確認画面のアクションでは… form->getObject() でモデルを引…

チェックボックスを選択状態にする

formオブジェクト内でsetDefault()を使う。

後からValidatorを付け足す

formオブジェクト内で以下のようなバリデーションを設定していたとする。 上記の「tag_id」(チェックボックス。sfWidgetFormChoice)に関する条件を追加したい場合… formオブジェクト内 Action内

include_componentの使い方

テンプレートの一部を共通化したいときに使う。 部品化する箇所(呼び出されるファイル) ファイル名の先頭にアンダースコアを付ける _menuPartner.php 呼び出し元のファイル こんな感じで呼び出す include_componentの引数…モジュール名、アンスコを取り除い…

今日の振り返り

ハマったところ 以下のようなエラーが。 Unknown record property / related component "news_id" on "NewsComment" ⇒NewsCommentモデルに定義されていないnews_idをtemplate側で呼びだそうとしていた。 更新日時のみを入れたい場合 getObjectメソッドを使え…

idカラムが無くてハマる(symfony1.4)

とあるテーブルからデータを引っ張ろうとしてたら、しきりに Column not found: 1054 Unknown column 'r.id' in 'field list', というエラーが出てうまくいかなかった。 対象のテーブルにidカラム(主キーとなるカラム)が無いことが原因だった。

relationの無いテーブル同士をLeft Joinする(symfony1.4)

Joinしたいテーブル news rel_news_tag 一致する箇所 news.id = rel_news_tag.news_id 参考にしたサイト http://d.hatena.ne.jp/shellcat/20101028/1288261492

「$this->getUser()」で呼ばれているものは何か

参考URL http://www.symfony-project.org/reference/1_4/ja/05-Factories#chapter_05_user 確認作業 var_dump(get_class($this->getUser())); ⇒string(6) "myUser" ⇒正体はmyUserクラス。以下の場所にあった。 apps/アプリケーション名/lib/myUser.class.php

データベースの切り替え

Doctrineの場合。 Doctrine_Manager::getInstance()->setCurrentConnection('データベース名');

hiddenにValueを入れる

symfony1.4のお話。 formクラスに以下のように記述。 Action側でこのように呼び出す。 ブラウザ側では、こんな感じで表示される。

symfonyプロジェクトを作った後に忘れがちなこと。

cacheとlogディレクトリの権限を777にする symfony1.4.15からはデフォルトで777になっているっぽい。 webディレクトリ直下にシンボリックリンクを張る $ ln -s /Users/hchuno/sfproject_topic/lib/vendor/symfony/data/web/sf sf webディレクトリ直下の.htac…

画面遷移しなくなった。

フォームオブジェクトを手っ取り早くテンプレート側で表示させるために、 <?php echo $form; ?> …としていたが、これではスタイルシート等を利かせにくいので、デザインに手をくわえやすいように <?php echo $form['nickname']->render(); ?> のように各…

Model絡みで大ハマリ

symfony1.4。

1.4でのバッチ処理作成

$ ./symfony generate:task registrant $ vim lib/task/registrantTask.class.php executeメソッドの中身 「setCurrentConnection」でデータベースの接続先を変更している。 バッチの走らせ方 例えば、 $this->namespace = 'batch' $this->name = 'registran…

スマホかガラケーかPCか、でテンプレートを切り替える

symfony1.4のお話。 sfPHPViewを継承したクラスに切り替え処理実装。

doctrine:build-schemaの後の設定。

symfony doctrine:build-model symfony doctrine:build-forms symfony doctrine:build-filter

mysql.sockでハマる

symfony1.4のお話。「doctrine:build-schema」 を使えば、DBの情報を調べてschema.ymlを自動で書いてくれるとのこと。 早速試してみたところ… /Users/hchuno/sfproject% ./symfony doctrine:build-schema >> doctrine generating yaml schema from databas…

symfonyのインストールに関係すること諸々。

symfonyのダウンロード。 symfonyのサイトからtarファイルを落としてくる。 curl -O http://www.symfony-project.org/get/symfony-1.4.14.tgz バージョンの確認 symfony jackie:sfproject hchuno$ php lib/vendor/symfony/data/bin/symfony -V symfony versi…

ブラウザで何が表示されているかを確認する

(※symfony1.0のお話) functionalテストで、ブラウザに何が表示されているかを知るには… $browser->getResponse()->getContent(); print等を使えば、ブラウザのソースを目視確認可能。 print($browser->getResponse()->getContent());

functional testが動かなかった原因

現象 ./symfony test-functional [Exception] You must provide the app to test. 原因と解決策 原因⇒引数を指定していなかった 解決策(以下) ./symfony test-functional mycity

limeテストでテンプレート内の要素をチェックする

「divタグ等にidを振ってそれが存在するかどうか」が基本方針。

なぜかセグメンテーション違反エラー

※symfony1.1でのお話。

symfonyメモ

SELECT文のLimit句と同じ処理を実装するには?? SQLだと… SELECT * FROM mychuno LIMIT 2, 3 Propelの場合 $Criteria->setOffset(2); $Criteria->setLimit(3); Doctrineの場合 $q->limit(2); $q->offset(3);

symfonyコマンドを使って「モジュール」を新規で作る

symfony1.1の場合… 構文 $ symfony module アプリケーション名 モジュール名 プロジェクトディレクトリ配下の… apps/アプリケーション名/modules/モジュール名 例 apps/mychuno/modules/index …というモジュール(indexモジュール)を作りたい場合、 $ symfony…

新しくテーブルを追加したときの対応

データベースのスキーマYAMLに、スキーマ情報を書く 以下のコマンドを叩く ./symfony propel-build-model