symfony1.2でDoctrine1.1使ってJobeetチュートリアル10日目
Form周りの話。
Customizing the Job Form
// apps/frontend/modules/job/template/showSuccess.php <img src="/uploads/jobs/<?php echo $job->getLogo() ?>" alt="<?php echo $job->getCompany() ?> logo" />
imageタグきた!
<?php echo image_tag( public_path('/') . 'uploads/jobs/' . $job->getLogo(), array('raw_name' => true, 'alt' => $job->getCompany() . 'logo') ) ?>
自分の様に、web rootがhost直下じゃない場合は書き換えが必要。
ポイントは二つ。
- public_path('/')でweb rootパスを取得
- image_tagのオプションにraw_nameを与えることで、srcにimage_tagの第一引数の値を代入(web/images内を探しに行かない)
Customizing the Job Formが終わった直後に、jobを新規登録・編集してもbindの第二引数が無いって怒られるので、
動作テストしたい場合は、
// apps/frontend/modules/job/actions/actions.class.php protected function processForm(sfWebRequest $request, sfForm $form) { $form->bind( $request->getParameter($form->getName()), $request->getFiles($form->getName()) // この行が必要 ); if ($form->isValid()) { $jobeet_job = $form->save(); $this->redirect('job/edit?id='.$jobeet_job['id']); } }
と、追加してあげてください。
あと、uploads/jobsフォルダのパーミッションを変更しないとロゴがアップできません。
The Form Action
Deleteアクションどこいった?
// apps/frontend/modules/job/actions/actions.class.php public function executeDelete(sfWebRequest $request) { $request->checkCSRFProtection(); $job = $this->getRoute()->getObject(); $job->delete(); $this->redirect('@job'); }
Deleteだけ昔のままなんで、getObject形式に変更。