イントロダクション
PHPフレームワークは色々ありますが局所的に流行っている物にYii2があります。
いっとき、Yiiシリーズはドキュメントが公式サイトのものしかなかったり記述もラフだったので覚えれば早く実装できるフレームワークにも関わらず理解するのが大変だったりしましたが、ここ最近(2024年現在)では公式ドキュメントが非常によく整備され学習しやすくなりました。
そんな中でもわかりにくかったり公式に書かれていなかったりする所、導入後にやっておくとよいところを書いていこうと思います。
第一回は設定ファイルの記述について書いていこうと思います。
DB設定
MVCフレームワークでは当然DB接続設定が必要ですが、この設定は以下の場所にありますので以下のように設定します(コメント行参照)
設置ディレクトリ\config\db.php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yii2_my_profile',
//dbname=の後に使用するDBの名前を書く
//host=の後に使用するDBのホスト(ipやドメイン名)を書く
'username' => 'root', //使用するDBのユーザー名を書く
'password' => '', //使用するDBユーザーのパスワードを書く
'charset' => 'utf8', //基本的にはこのままでOK
// Schema cache options (for production environment)
//'enableSchemaCache' => true,
//'schemaCacheDuration' => 60,
//'schemaCache' => 'cache',
];
コンタクトフォームの設定(gmailを使用する)
Yii2をインストールするとデフォルトでコンタクトフォームが提供されますが詳細な設定方法が有りません。
ここではgmailを使ってコンタクトフォームからのメールを受信するようにします。
尚、ここで使うパスワードはgmailのパスワードではなくそのアカウントのアプリパスワードと言う物を取得してそれを使います。
アプリパスワード発行手順
新しくgmailのアカウントを作る(ex hogehogehoge@gmail.com)
googleのアカウント管理のページを開き、2段階認証を設定する(要スマホ)2段階認証でスマホの電話番号を登録するとSMSで認証コードが届くので認証コードを入れて2段階認証を有効にする。
引き続きアカウント管理のページの上部に検索フォームがあるのでアプリパスワードと入力して検索。
候補にアプリパスワード セキュリティと表示されるので選択、ログインを求められるのでログインする。
「アプリ固有のパスワードを新規作成するには、下にアプリ名を入力してください」と表示されるのでフォームに適当な名前を入れて「作成」ボタンをクリック。
アプリパスワードが発行される※パスワードに半角スペースが入っているがこれは消す事。
アプリパスワードを控えておく。
site/contactの実装
以下のようにコードを書く
config/params.php
<?php
return [
'adminEmail' => 'example@gmail.com',
'senderEmail' => 'example@gmail.com',
'senderName' => 'gmail.com',
];
config/web.php
28行目辺りに 'mailer' => という配列があるので探して以下のように書き換え
'mailer' => [
'class' => \yii\symfonymailer\Mailer::class,
'viewPath' => '@app/mail',
'useFileTransport' => false,
'transport' => [
'dsn' => 'smtp://example@gmail.com:取得したアプリパスワード@smtp.gmail.com:587',
],
],
ルーティング
Yii2デフォルトのルーティングではコントローラーとアクション名をURLに記載するのは多くのフレームワークと同じですが…
https://hostname/index.php?r=site%2Fsay
これはsiteコントローラーのsayアクションを参照していますがちょっとURLが汚いですよね?
ここはsite/sayとスマートな記述にしたいですよね。
この設定は以下のコードにあります。
設置ディレクトリ\config\web.phpの46行目あたりにある urlManagerの記述を検索して参照
// コメントアウトされているのでコメントアウトを解除して以下のような記述をする
/**
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],
*/
こうすると
http://127.0.0.1/2ndapp/my_profile/web/site/contact
といったURLになります。
これはsiteコントローラーのcontactアクションを参照しています。
OK,これで準備は整いました。
次回はユーザー登録、ユーザーログイン、ユーザーログアウト、ユーザーアカウント更新について解説します。