sfDoctrineApplyPluginその2
sfDoctrineApplyPluginを動かすまでに結構苦労した。参考にした情報は、主に以下の2つ。
- 公式のREADME
- このページ(英語)。
以下、自分がやった方法を書くが、バージョン依存の点も結構ありそうなので要注意。
■まずは環境
- symfony 1.4.3
- sfDoctrineApplyPlugin 1.1.1
■テーブルレイアウト
2.のページにはREADME通りだと上手く行かないと書かれているが、結論からするとそのままで問題なかった。念のため、以下にschema.ymlを抜粋して記載。
sfGuardUserProfile: columns: id: { type: integer(4), primary: true, autoincrement: true } user_id: { type: integer(4), notnull: true } fullname: { type: string(80) } email: { type: string(80) } validate: { type: string(17) } relations: User: class: sfGuardUser local: user_id foreign: id type: one foreignType: one foreignAlias: Profile onDelete: CASCADE
fullnameで一つのフィールドって言うのはセンスなさ過ぎってつっこみは2.のページにも沢山入ってるが、とりあえずは今後の課題に残しておいて次に進む。
■Zend Frameworkを使わないようにソースを修正
基本は2のページの「3. Getting rid of Zend_Mailer」の手順+そこよりもう少し下にある「createGuid()」をコピペするだけ。
英語が全くダメな人向けに一応書くと、apps/frontend/modules/sfApply/actions/action.class.phpでsfApplyActionsを定義(BasesfApplyActionsを継承)する。で、その中に以下の3つのメソッドがある形になる。
- executeApply
- createGuid
■メールの設定(必要に応じて)
factories.ymlより抜粋。設定の仕方はこのページが参考になった。
mailer: class: sfMailer param: logging: %SF_LOGGING_ENABLED% charset: %SF_CHARSET% delivery_strategy: realtime transport: class: Swift_SmtpTransport param: host: 192.168.1.2 port: 25
■モジュールの有効化、routing.ymlへの追記
この辺はREADME通り。
settings.ymlに以下の記述。
enabled_modules: [default, sfGuardAuth, sfApply]
routing.ymlもREADME通り。
■権限の設定
今までので大体動きそうな気がするんだけど、sfApply/applyにアクセスするとログイン画面に戻されてしまう。ユーザーアカウントを作るための画面にアクセスしようとしてログイン画面に飛ばされるなんておかしい。ログを確認すると以下のようなのが。
5 03 18:27:33 symfony [info] {sfBasicSecurityFilter} Action "sfApply/apply" requires authentication, forwarding to "sfGuardAuth/signin"
うーん、これに関しては参考にした2つのページでは一言も触れられていなかったので、もしかしたら自分のインストールがどっかおかしいのかもしれないけど、とりあえずsecurity.ymlに以下のような記述を追加した。
apply: is_secure: false confirm: is_secure: false all: is_secure: true
以上でとりあえず動作するようになった。