原文来自:https://jellybool.com/post/programming-with-yii2-getting-started-with-...
貌似我排版排了很久还是没能排版成功,SF的编辑器实时预览时永远是好的,但是到了文章页面貌似就。。。想看好的排版直接去我的blog吧。有图有真相
嗯,今天起打算写一个系列教程来过一遍Yii2,没错,我就是来安利大家使用Yii2
的。至于最爱的Laravel
,后面是打算会有教程的,只是不知道是系列博文还是直接录视频而已,因为Laravel
貌似想讲的东西实在是太多了。给Laravel
发完金水之后,还是回到Yii2
本身吧。
额,如果你还没听说过什么是Yii
,可以直接看下面的链接:
http://www.yiiframework.com/
安装Yii2
打算从头开始,所以,连安装Yii2
也稍微写一点吧。安装Yii2
最好的方式就是使用composer
:
composer global require "fxp/composer-asset-plugin:~1.0.3"
composer create-project --prefer-dist yiisoft/yii2-app-basic helloYii
等待一小段时间之后(如果等太久或直接报错,请使用VPN),在这两步你应该会看到类似下面的信息:
Updating dependencies (including require-dev)
- Installing fxp/composer-asset-plugin (v1.0.3)
Downloading: 100%
Writing lock file
Generating autoload files
> yii\composer\Installer::postCreateProject
chmod('runtime', 0777)...done.
chmod('web/assets', 0777)...done.
chmod('yii', 0755)...done.
这里的第一条命令跟官方文档的有稍微的差别,官方文档还是停留在fxp/composer-asset-plugin:~1.0.0
,在我写这篇文章的时候,最新版本为fxp/composer-asset-plugin:~1.0.3
。所以这里会有一些些不一样。
注:我直接将
helloYii
项目放在了桌面,你可以根据自己的喜好调整目录
安装完Yii2
之后,进入到项目的web/
目录:
cd helloYii/web
开启PHP内置服务器:
php -S localhost:8999
然后再浏览器输入localhost:8999
,你就可以看到下面的页面了:
这里需要说明的是:我是在mac下进行的开发,并且处于便捷的原因,我后续也会一直使用PHP内置服务器,也就是说本教程的localhost:8999
是我默认的首页地址。至于用MAMP for OS X的用户,你可以直接配置MAMP
cd /Applications/MAMP/htdocs
ln -s ~/Desktop/helloYii/ /Applications/MAMP/htdocs/helloYii
然后你可以访问这样的地址:http://localhost:8888/helloYii/web
,不出意外,你也可以看Yii
默认的可爱首页了。
对于用Windows的同学,我建议你们直接用WAMP,不过具体配置我倒是没有实际操作过,所以不做任何评论。
关于Yii2
MVC的支持就基本不用多说了,之前发过一篇文章粗略地说过一遍。而在这里我想说明的是:在Yii2中,我们的单入口文件是web/index.php
,所以刚刚在开启PHP内置服务器的时候需要来到这个目录,不过如果你直接指定也是可以的。这个文件负责将Yii2项目所需要的东西全部加载完成之后,最后通过run
方法来使得整个项目可以跑起来:
run();
默认的情况下,我们看到的Yii2首页是/controllers/SiteController.php
下的Index
方法
public function actionIndex()
{
return $this->render('index');
}
通常情况下,控制器一般都会有比较多的方法来链接模型和视图之间的桥梁,但是方法虽多,很多时候都只是一些简单的代码和逻辑,所以,不用担心。
上面的Index
方法渲染了index
这个模版,而这个模板位于/views/site/index.php
,至于控制器和视图之间的命名规则,参考这里:
views/ControllerID/ViewName.php
-
ControllerID
: 表示控制器的ID
,也就是控制器去掉Controller
的前缀,比如SiteController
就对应site
-
ViewName
: 是对应方法的名字,但是不包括action
字眼,比如actionIndex
对应的是index.php
而在使用render
方法来渲染视图的时候,Yii2
默认地也会渲染载入/views/layouts/main.php
这个文件,而这个文件做的事就是载入一些html头部的共用文件,比如js
,css
,导航栏和底部繁荣导航栏等。这里其实我们最值得关心的其实就是下面这段代码的= $content ?>
:
= Breadcrumbs::widget([
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
]) ?>
= $content ?>