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

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

クラスファイルに記載されているメールの設定を設定ファイルに移動します。

Contact\Formリソースの変更

メールの件名も設定できた方がいいので、ついでに設定にします。

--- a/src/Resource/App/Contact/Form.php
+++ b/src/Resource/App/Contact/Form.php
@@ -14,21 +14,29 @@ use BEAR\Resource\ResourceObject;
 use BEAR\Resource\Code;
 use Kenjis\Contact\Service\SwiftMailerFactory;
 use Ray\Di\Di\Inject;
+use Ray\Di\Di\Named;

 class Form extends ResourceObject
 {
     private $mailerFactory;

+    // Email subject
+    private $subject;
     // Email account info to receive posted data
-    private $adminEmail = 'admin@example.org';
-    private $adminName = 'Administrator';
+    private $adminEmail;
+    private $adminName;

     /**
      * @Inject
+     * @Named("config=contact_form")
      */
-    public function __construct(SwiftMailerFactory $mailerFactory)
+    public function __construct(SwiftMailerFactory $mailerFactory, $config)
     {
         $this->mailerFactory = $mailerFactory;
+
+        $this->subject    = $config['subject'];
+        $this->adminEmail = $config['admin_email'];
+        $this->adminName  = $config['admin_name'];
     }

     /**
@@ -63,7 +71,7 @@ class Form extends ResourceObject
         ];

         $mailer = $this->mailerFactory->create();
-        $mailer->setSubject('Contact Form')
+        $mailer->setSubject($this->subject)
             ->setFrom($data['email'], $data['name'])
             ->setTo($this->adminEmail, $this->adminName)
             ->setTemplate('mailer/contact_form.twig', $data);

コンストラクタで名前付きインジェクション(@Named("config=contact_form"))を使い、引数$configに設定contact_form(配列)をインジェクトします。

設定ファイル

BEAR.Sundayの設定ファイルvar/conf/constants.phpに設定contact_formを追加します。

--- a/var/conf/constants.php
+++ b/var/conf/constants.php
@@ -24,6 +24,11 @@ return [
         // optional
         'master_db' => $masterDb,
         'slave_db' => $slaveDb,
+        'contact_form' => [
+            'subject'     => 'Contact Form',
+            'admin_email' => 'admin@example.org',
+            'admin_name'  => 'Administrator',
+        ],
     ],
     'dev' => [],
     'api' => [],

これで設定を設定ファイルに追い出せました。

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

続く。

過去記事

関連

Date: 2014/09/13

Tags: bear