搜索
首页后端开发php教程Yii2的相干学习记录,初始化Yii2(二)

Yii2的相关学习记录,初始化Yii2(二)

前面已经将Yii2下载下来了,那我们就需要能实际的使用。

一、初始化,因为我都是在windows系统下,所以用cmd命令打开下载下来的Yii2的根目录。然后运行下面命令:

init

会提示选择0为开发环境,1为生成环境。一般选生产环境。后期可以同样输入此命令来切换开发环境和生产环节,但是需要注意切换时需要提前在“environments”目录中中提前写好生产环境的配置,以免切换时覆盖丢失配置项,后面还会说,现在继续往下走。

二、配置数据库,现在前台访问地址为:http://localhost/vishun/backend/web/index.php,后台访问地址为:http://localhost/vishun/frontend/web/index.php,其中vishun是我Yii框架安装的目录名称。现在访问时会报数据库连接的错误,因为数据库没有连接上,所以,我们需要先创建一个数据库(个人比较喜欢用phpmyadmin),然后在Yii2中配置数据库参数:

配置文件在三个地方存在,common/config,frontend/config,backend/config,一般来说common是放前后台都会用到的配置文件,而frontend和backend则是放各自的配置文件,如果重复,则前后台的会覆盖公用的。

每个文件夹下又分为main.php和main-local.php,这主要是为了团队协作,一般团队成员都在自己的电脑环境下开发,然后提交到git或svn上。所以团队成员用自己的数据库账号密码什么的,如果提交上去,其它团队成员更新下来和自己的账号密码不对,就会产生错误,所以数据库等配置文件放在*-local文件中,提交时*-local的文件不提交。

但是如果不提交还是会有问题,像是一个新成员加入,直接从git上下载代码下来,但是数据库配置文件由于所有人都没有提交,整个程序不完整,那就导致新成员根本就没有数据库的配置。所以这里还需要用到上方提到过的environments目录,这里面有dev(开发)和prod(生产)两种环境,主要是存储*-local文件的模板。在使用init命令时,就会根据这里面的文件来生成*-local文件,然后新成员在文件中填上自己的数据库账号密码就可以使用了。

以上团队环境详细说明可以看这里:深入理解Yii2.0--环境和配置文件,说的非常详细。

三、配置完成后就可以,还是会报错,但不是报数据链接的错误了,而是user表没有找到。那我们就创建user表。Yii2高级版框架中user表已经写好了,可以打开console/migrations下有*_init.php文件,这个就是写好的user表。只需在cmd中Yii2根目录下运行命令:

yii migrate

这样user表就创建好了。这时访问前后台都OK了。migrate命令是Yii框架迁移或者修改数据库的工具,尤其的在团队协作中,如果成员在本地电脑上增加了一张表,如何告知其它成员呢,用yii migrate/create命令就可在console/migrations创建一个改动,然后就增加的表内容写在里面,提交后其它成员更新后,用yii migrate命令,即可将自己的数据库同步到最新的,绝对是十分方便。migrate功能还很多,自己也没完全弄清楚呢,可能在下面的前后台分离章节中还会说。

四、顺便说下配置邮箱吧。完成前三步功能时,就可以注册个会员看看,当忘记密码时,则在登录界面点击忘记密码,需要通过邮件来找回,所以我们需要配置下邮箱:

Yii2高级版框架中是集成了邮箱类的,在common/config/main-local.php文件可以看到:

'mailer' =><span style="color: #000000;"> [    </span>'class' => 'yii\swiftmailer\Mailer',    'viewPath' => [email protected]/mail',<span style="color: #000000;">]</span>,

这就是相关的配置文件,之所以放到*-local文件中,因为包含个人账号的敏感信息。

上面的配置信息是不全的,需要填写发件邮箱,端口号什么的,所以修改上面为:

'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>,        

而发送邮件的整个流程方法在Yii2高级版中都写好了,所以只需要配置就能发送了。

配置完上方后,可能找回密码发送邮件是应该还会报错,类似这种:

Expected response code 250 but got code "553", with message "553 Mail from must equal authorized user

这是因为有些邮件服务器要求from和username必须一直,例如网易的服务器,而在frontend/models/PasswordResetRequestForm.php中的sendEmail方法规定在63行左右,

 ->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自定义模板什么的。睡觉了先。

 

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
解释负载平衡如何影响会话管理以及如何解决。解释负载平衡如何影响会话管理以及如何解决。Apr 29, 2025 am 12:42 AM

负载均衡会影响会话管理,但可以通过会话复制、会话粘性和集中式会话存储解决。1.会话复制在服务器间复制会话数据。2.会话粘性将用户请求定向到同一服务器。3.集中式会话存储使用独立服务器如Redis存储会话数据,确保数据共享。

说明会话锁定的概念。说明会话锁定的概念。Apr 29, 2025 am 12:39 AM

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

有其他PHP会议的选择吗?有其他PHP会议的选择吗?Apr 29, 2025 am 12:36 AM

PHP会话的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。1.Cookies通过在客户端存储数据来管理会话,简单但安全性低。2.Token-basedAuthentication使用令牌验证用户,安全性高但需额外逻辑。3.Database-basedSessions将数据存储在数据库中,扩展性好但可能影响性能。4.Redis/Memcached使用分布式缓存提高性能和扩展性,但需额外配

在PHP的上下文中定义'会话劫持”一词。在PHP的上下文中定义'会话劫持”一词。Apr 29, 2025 am 12:33 AM

Sessionhijacking是指攻击者通过获取用户的sessionID来冒充用户。防范方法包括:1)使用HTTPS加密通信;2)验证sessionID的来源;3)使用安全的sessionID生成算法;4)定期更新sessionID。

PHP的完整形式是什么?PHP的完整形式是什么?Apr 28, 2025 pm 04:58 PM

文章讨论了PHP,详细介绍了其完整形式,在We​​b开发中的主要用途,与Python和Java的比较以及对初学者的学习便利性。

PHP如何处理形式数据?PHP如何处理形式数据?Apr 28, 2025 pm 04:57 PM

PHP使用$ \ _ post和$ \ _获取超级全局的php处理数据,并通过验证,消毒和安全数据库交互确保安全性。

PHP和ASP.NET有什么区别?PHP和ASP.NET有什么区别?Apr 28, 2025 pm 04:56 PM

本文比较了PHP和ASP.NET,重点是它们对大规模Web应用程序,性能差异和安全功能的适用性。两者对于大型项目都是可行的,但是PHP是开源和无关的,而ASP.NET,

PHP是对病例敏感的语言吗?PHP是对病例敏感的语言吗?Apr 28, 2025 pm 04:55 PM

PHP的情况敏感性各不相同:功能不敏感,而变量和类是敏感的。最佳实践包括一致的命名和使用对案例不敏感的功能进行比较。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境