BEAR.Sundayでコンタクトフォームを作ってみる⑧

BEAR.Sundayでコンタクトフォームを作ってみる⑦の続きです。

コードの軽微な改良をします。

フォームの改良

入力項目はすべて必須なので、required属性を追加します。

--- a/src/Interceptor/Contact/Form.php
+++ b/src/Interceptor/Contact/Form.php
@@ -38,7 +38,8 @@ class Form implements MethodInterceptor
                     'id' => 'name',
                     'name' => 'name',
                     'size' => 20,
-                    'maxlength' => 50
+                    'maxlength' => 50,
+                    'required' => 'required'
                 ]
             );
         $filter->setRule(
@@ -60,6 +61,7 @@ class Form implements MethodInterceptor
                     'name' => 'email',
                     'size' => 20,
                     'maxlength' => 100,
+                    'required' => 'required'
                 ]
             );
         $filter->setRule(
@@ -80,6 +82,7 @@ class Form implements MethodInterceptor
                     'name' => 'comment',
                     'cols' => 40,
                     'rows' => 5,
+                    'required' => 'required'
                 ]
             );
         $filter->setRule(

Contact\Formリソースの改良

少々適切でない変数名を修正し、ハードコードされている管理者のアドレスをとりあえずプロパティに追い出します。

--- a/src/Resource/App/Contact/Form.php
+++ b/src/Resource/App/Contact/Form.php
@@ -17,14 +17,18 @@ use Ray\Di\Di\Inject;

 class Form extends ResourceObject
 {
-    private $mailer;
+    private $mailerFactory;
+
+    // Email account info to receive posted data
+    private $adminEmail = 'admin@example.org';
+    private $adminName = 'Administrator';

     /**
      * @Inject
      */
-    public function __construct(SwiftMailerFactory $mailer)
+    public function __construct(SwiftMailerFactory $mailerFactory)
     {
-        $this->mailer = $mailer;
+        $this->mailerFactory = $mailerFactory;
     }

     /**
@@ -58,10 +62,10 @@ class Form extends ResourceObject
             'comment' => $comment,
         ];

-        $mailer = $this->mailer->create();
-        $mailer->setSubject('コンタクトフォーム')
+        $mailer = $this->mailerFactory->create();
+        $mailer->setSubject('Contact Form')
             ->setFrom($data['email'], $data['name'])
-            ->setTo('admin@example.org', '管理者')
+            ->setTo($this->adminEmail, $this->adminName)
             ->setTemplate('mailer/contact_form.twig', $data);

 //        echo '<pre>'

ここまでのソースコード

GitHubで公開しました。

今日はここまでにします。

BEAR.Sundayでコンタクトフォームを作ってみる⑨へ続く。

過去記事

関連

Date: 2014/09/12

Tags: bear