Skip to content

symfonyのフォームでリストボックスの選択肢を絞る

symfonyのフォームでリストボックスの選択肢を絞る published on symfonyのフォームでリストボックスの選択肢を絞る へのコメントはまだありません

symfonyの話。前回に引き続き、具体的な例を書く。

■やりたいこと:Hostの編集画面で、Domain一覧のリストボックスの選択肢を絞りたい

テーブルDomainとHostがあって、Host.domain_idがDomain.idを参照してるとする。

テーブルHostのモジュールを作成すると、編集画面でdomain_idの箇所はドメイン名の一覧のリストボックス(プルダウン)が表示される。そこまではいいんだけど、全てのドメインをそこに表示するのではなくて、そのユーザーが所有しているドメインのみを表示させたいとする。

Continue reading symfonyのフォームでリストボックスの選択肢を絞る

DoctrineでID以外でリレーションさせると…

DoctrineでID以外でリレーションさせると… published on DoctrineでID以外でリレーションさせると… へのコメントはまだありません

 以下のようなschema.ymlを作った(かなりはしょってるけど)。Domain.nameは一意だから、Host.domain_nameとDomain.nameをリレーションさせた。その後、doctrin:buildでフォームを作成したけど、Domain.nameがテキストボックスじゃなかった。

# schema.yml
Host:
actAs: { Timestampable: ~ }
columns:
domain_name: { type: string(255), notnull: true }
name:        { type: string(255), notnull: true }
relations:
Domain:      { onDelete: CASCADE, local: domain_name, foreign: name }
Domain:
actAs: { Timestampable: ~ }
columns:
name:      { type: string(255), notnull: true }

今考えるとDomain.nameにunique制約付けてないせいかな・・・

とりあえずメモ書き程度。

筋トレ開始

筋トレ開始 published on 筋トレ開始 へのコメントはまだありません

本ブログでの私生活のネタはスゴい久しぶりな気がする。

1週間前に筋トレを始めた。現在178cm, 58kg (多分)。目標体重60kg。

今更ながらビリーズブートキャンプ・・・ブックオフとかで500円くらいでたたき売られてるかと思いきや、意外にそうでもない。

プロテインとかも買ってみた。トレーニングの前後+寝る前に飲んでる。効果が出るまで続けたい。

sfDoctrineApplyPlugin

sfDoctrineApplyPlugin published on sfDoctrineApplyPlugin へのコメントはまだありません

現在symfonyを使って作っているサイトでは、利用者がユーザー登録するような形になる予定。

ちょっとググったらsfApplyPluginというのがあるらしい。こちらのページに導入の仕方が書いてあった。しかしもうだまされない。これはDoctrineに対応していないかもしれない、と思ってsfApplyPluginのページを見たら、案の定Propel限定。

でも、検索したらやっぱりあった。Doctrine対応のsfDoctrineApplyPluginというのが。とりあえず試してみたいが、Zend Frameworkも必要??

GW中にでも試してみようと思う。

MySQLで外部キーを付ける時にエラー

MySQLで外部キーを付ける時にエラー published on MySQLで外部キーを付ける時にエラー へのコメントはまだありません

symfonyでschema.ymlにごにょごにょ書いていざテーブル作成!と思ったら以下のエラー。

SQLSTATE[HY000]: General error: 1005 Can't create table 'dbname.#sql-192c_1a6' (errno: 150). Failing Query: "ALTER TABLE table1 ADD CONSTRAINT table1_user_id_sf_guard_user_id FOREIGN KEY (user_id) REFERENCES sf_guard_user(id)". Failing Query: ALTER TABLE table1 ADD CONSTRAINT domain_user_id_sf_guard_user_id FOREIGN KEY (user_id) REFERENCES sf_guard_user(id)

結論:原因は外部キーを付けるフィールドと参照先のフィールドの型があっていないこと。

Continue reading MySQLで外部キーを付ける時にエラー

The module “sfGuardAuth” is not enabled.

The module “sfGuardAuth” is not enabled. published on The module “sfGuardAuth” is not enabled. へのコメントはまだありません

引き続きsymfonyでアプリ作成中に、以下のようなエラーが出た。

The module "sfGuardAuth" is not enabled.

昨日は全く問題なく動いていたのに・・・とりあえずググるとall:の後に書くと無視されることがある、とか.settingが2つあったとかその他色々情報が見付かったけど、どれも自分のケースには該当しない。

30分くらい悩んだ後、もう一度settings.ymlを見てみたら・・・エラーメッセージ通り、単にsfGuardAuthが存在しないだけだった!アホだ・・・

※frontendのsettings.ymlには存在していてbackendには存在していなかった。昨日問題なく動いたのは、frontendでログインしてその後にbackendに移動したからセッションが有効だったため。で、1日経ってセッションが切れてsfGuardAuthモジュールのログインページに飛ばそうとしたら、そんなのがない!ってなったらしい。

sfGuardUserとプロファイルテーブルを関連づける

sfGuardUserとプロファイルテーブルを関連づける published on sfGuardUserとプロファイルテーブルを関連づける へのコメントはまだありません

symfony 1.1を使っていた時に、sfGuardPluginについてのエントリーを書いた。sfGuardUserテーブルにはログインID、パスワードくらいしか情報が無くて、本名やメールアドレスなどのフィールドは別テーブルを作って1:1のリレーションをさせなければいけないという内容。

symfony 1.4でsfDoctrineGuardPluginでも基本コンセプトは一緒なんだけど、このページ(英語)に従ってやったら非常に簡単にできた。概略は以下の通り。

  • schema.ymlにプロファイルテーブル(Profile)を追加し、sfGuardUserと関連づける
  • sfGuardUserのfixtureを修正
  • symfony doctrine:buildでテーブル、モデル、フォームを作成
  • sfGuardUserAdminForm.class.phpを修正し、プロファイルのフォームも読み込む
  • generator.ymlを少し修正

一点注意。多分、schema.ymlのsfGuardUserとProfileの外部キーの所で、onDelete: CASCADE が必要な気がする。

※その他、sfGuardPlugin関係のtipsをまとめたページがあった。というかこっちのページを先に見つけた。そこで、2つのテーブル(sfGuardUserとsfGuardUserProfile)を関連づける方法は書いてあったけど、1つの画面で編集できるようにする方法は載ってなかった。

■環境

symfony 1.4.3

DreamHostのmysqlコマンドで文字化け

DreamHostのmysqlコマンドで文字化け published on DreamHostのmysqlコマンドで文字化け へのコメントはまだありません

自分用メモ。

DreamHostで動いているシステムのDBの中身を触る際、phpMyAdminなんて使うのはたるいのでsshでログインしてmysqlコマンドを使う。

DBの文字コードはutf8だけど、mysqlコマンドはlatin1を使おうとする。解決方法は2通り。

1. 以下のようにコマンドラインオプションで文字コードを指定。

mysql -h mysql.example.com -u user -p --default-character-set=utf8

2. ホームディレクトリに .my.cnf というファイルを作り、そこに以下の内容を記述。ファイル名はドットで始まることに注意(3分くらいハマった)。

[client]
default-character-set=utf8

 

EclipseでBazaarが上手く行かない・・・

EclipseでBazaarが上手く行かない・・・ published on EclipseでBazaarが上手く行かない・・・ へのコメントはまだありません

Bazaarを使ってみようと思って、Eclipseの環境を設定するところまではこないだやった。で、実際にEclipseのプロジェクトをBazaarに登録しようと思ったけど上手く行かない。

Team -> Share Projectとやったら特にエラーとか出てないし問題無さそうと思ったんだけど、ファイルを変更してコミットしようとしてもnothing to commitとかでる。

ちょっとググったらこんなのを見つけた。

今はプログラムを書く方が重要なので、これの問題解決は後回しにし、当面はSubversionを使う事にした。後からBazaarに移行することも出来るし。