Yii2 関連の学習記録、Yii2 の初期化 (2)
Yii2 はダウンロード済みなので、実際に使えるようにする必要があります。
1. 初期化。Windows システムなので、cmd コマンドを使用して、ダウンロードした Yii2 のルート ディレクトリを開きます。次に、次のコマンドを実行します。
init
開発環境として 0 を選択し、運用環境として 1 を選択するように求められます。通常は実稼働環境を選択します。後からこのコマンドを入力して、開発環境と本番環境のリンクを切り替えることもできますが、切り替える際には、上書きして失われないように、本番環境の設定を事前に「environments」ディレクトリに書き込む必要があることに注意してください。切り替え時の設定項目については後ほど説明します。
2. これで、フロントエンド アクセス アドレスは http://localhost/vishun/backend/web/index.php になり、バックエンド アクセス アドレスは http:// になります。 localhost/vishun/frontend/web/index.php、vishun は Yii フレームワークがインストールされているディレクトリの名前です。ここでアクセスすると、データベースが接続されていないため、データベース接続エラーが報告されます。そのため、最初にデータベースを作成する必要があります (個人的には phpmyadmin を使用することをお勧めします)。次に、Yii2 でデータベース パラメータを設定します:
設定ファイルは 3 番目にあります。 common/config、frontend/config、backend/config の 3 つの場所があります。一般に、common はフロントエンドとバックエンドの両方で使用される設定ファイルであり、フロントエンドとバックエンドは独自の設定を保存するために使用されます。ファイルが繰り返される場合は、フロントエンドとバックエンドのパブリック ファイルが対象になります。
各フォルダーは main.php と main-local.php に分かれており、これは主にチーム メンバーが自分のコンピューター環境で開発し、 git または svn に送信します。したがって、チーム メンバーが自分のデータベース アカウントとパスワードを使用し、他のチーム メンバーがそれを更新し、自分のアカウントとパスワードが間違っていると、データベースとその他の構成ファイルが *- に配置されます。ローカル ファイルを送信する場合、*- ローカル ファイルは送信されません。
しかし、それを提出しないと、依然として問題が発生します。たとえば、新しいメンバーが参加して git から直接コードをダウンロードしても、データベース構成ファイルが全員によって提出されていない場合、プログラム全体が不完全なため、メンバーにはデータベース構成がまったくありません。したがって、上記の環境ディレクトリも使用する必要があります。dev (開発) と prod (本番) の 2 つの環境があり、主に *-local ファイルのテンプレートが保存されます。 init コマンドを使用すると、その中のファイルに基づいて *-local ファイルが生成され、新しいメンバーはそのファイルにデータベース アカウントのパスワードを入力することでそのファイルを使用できるようになります。
上記のチーム環境の詳細な説明は、ここにあります: Yii2.0 の深い理解 -- 環境および設定ファイル。これは非常に詳細です。
3. 設定が完了した後もエラーが報告されますが、これはデータリンクエラーではありませんが、ユーザーテーブルが見つかりません。次に、ユーザーテーブルを作成します。 Yii2 Advanced Edition フレームワークのユーザー テーブルが作成されました。console/migrations の下にある *_init.php ファイルを開くことができます。これは作成されたユーザー テーブルです。 cmd の Yii2 ルート ディレクトリでコマンドを実行するだけです:
yii migrate
ユーザー テーブルが作成されます。現時点では、フロントエンドとバックエンドの両方へのアクセスは問題ありません。 merge コマンドは、Yii フレームワークでデータベースを移行または変更するためのツールです。特にチーム コラボレーションにおいて、メンバーがローカル コンピューターにテーブルを追加した場合、コンソールでテーブルを作成するために yii merge/create コマンドを使用する方法を教えてください。 /migrations 変更を加え、追加したテーブルの内容をそこに書き込みます。送信後、他のメンバーが更新された後、yii merge コマンドを使用してデータベースを最新のデータベースに同期できます。これは非常に便利です。移行には多くの機能がありますが、それらについてはまだ完全には理解していません。これらについては、以下のフロントエンドとバックエンドの分離に関する章で説明する可能性があります。
4. さて、メールアドレスを設定しましょう。最初の 3 つの手順を完了したら、メンバーとして登録して確認することができます。パスワードを忘れた場合は、電子メールでパスワードを取得する必要があるため、次の電子メール アドレスを設定する必要があります。 🎜>
Yii2 Advanced メールボックス クラスはバージョン フレームワークに統合されています。common/config/main-local.php ファイルで確認できます。'mailer' =><span style="color: #000000;"> [ </span>'class' => 'yii\swiftmailer\Mailer', 'viewPath' => [email protected]/mail',<span style="color: #000000;">]</span>,
'mailer' =><span style="color: #000000;"> [ </span>'class' => 'yii\swiftmailer\Mailer', 'viewPath' => [email protected]/mail', <span style="color: #008000;">//</span><span style="color: #008000;"> send all mails to a file by default. You have to set // 'useFileTransport' to false and configure a transport // for the mailer to send real emails.</span> 'useFileTransport' => <span style="color: #0000ff;">false</span>, 'transport' =><span style="color: #000000;"> [ </span>'class' => 'Swift_SmtpTransport', 'host' => 'smtp.163.com', <span style="color: #008000;">//</span><span style="color: #008000;">我这里用163邮箱 </span> 'username' => '你的邮箱名', 'password' => '你的邮箱密码', 'port' => '25', 'encryption' => 'tls',<span style="color: #000000;"> ]</span>,
<code class="hljs dart"><span class="hljs-string"> //'messageConfig'=>[ // <span class="hljs-string">'charset'=><span class="hljs-string">'UTF-8', // <span class="hljs-string">'from'=>[<span class="hljs-string">'你的邮箱名'=><span class="hljs-string">'robot'] //], </span></span></span></span></span></span></code><span style="color: #000000;"> ]</span>,
Expected response code 250 but got code "553", with message "553 Mail from must equal authorized user
->setFrom([\Yii::<span style="color: #800080;">$app</span>->params['supportEmail'] => \Yii::<span style="color: #800080;">$app</span>->name . ' robot'])
From是取得supportEmail参数,这个参数在common/config/params.php中定义了默认为:[email protected],[email protected]?一是把这个参数改成‘你的邮箱名’就可以正常发送了;方法二是将上方配置文件<span class="hljs-string">messageConfig</span>
注释的取消,然后->setFrom这行删除掉。(所有的这些首先确保先开通smtp服务)
顺便说下,因为你邮箱配置实在*-local文件中,所以为了其它成员也都能用你这个配置,应该在environments/dev/common/main-local.php中添加:
'mailer' =><span style="color: #000000;"> [ </span>'class' => 'yii\swiftmailer\Mailer', 'viewPath' => [email protected]/mail', <span style="color: #008000;">//</span><span style="color: #008000;"> send all mails to a file by default. You have to set // 'useFileTransport' to false and configure a transport // for the mailer to send real emails.</span> 'useFileTransport' => <span style="color: #0000ff;">false</span>, 'transport' =><span style="color: #000000;"> [ </span>'class' => 'Swift_SmtpTransport', 'host' => '', <span style="color: #008000;">//</span><span style="color: #008000;">空着,让其他人自己填写</span> 'username' => '', 'password' => '', 'port' => '', 'encryption' => 'tls',<span style="color: #000000;"> ]</span>, 'messageConfig'=><span style="color: #000000;">[ </span>'charset'=>'UTF-8', 'from'=>[''=>'robot'<span style="color: #000000;">] ]</span>,<span style="color: #000000;"> ]</span>,
这样,其他人更新时只需init命令一下,然后要填上自己的邮箱账号就可以发送邮件了。
很多时候邮件填写都是从数据库获取的,这时候就不应该在配置文件中了,而是应该单独写个类,(类似新建components文件并引入,写在这里面),顺便封装下发送方法。我自己也没实现过,只是思路而已。
以上就是Yii2高级版的初始化,下节可能记录下如何套用好看的后台界面和gii自定义模板什么的。睡觉了先。