Yii2实用基础学习笔记(一):模型、视图与控制器
2016-07-03 00:00
971 查看
摘要: Yii2实用基础学习笔记系列
1 .控制器以【控制器名+Controller】命名在@app\controllers目录下,继承自yii\web\Controller。
2 .路由格式是【操作ID/操作ID】,控制器ID test-user相当于类名TestUserController。
3 .操作以 action + 方法名构成,操作ID say-hello相当于方法名actionSayHello。
控制器的一些方法
1 .重定向 $this->redirect([‘test/index’])
2 .回到首页 $this->goHome()
3 .返回 $this->goBack()
4 .刷新当前页面 $this->refresh()
5 .渲染视图 $this->render(视图,注入视图数组数据)
6 .渲染没有layout的视图 $this->renderPartial(视图,注入视图数组数据)
7 .响应Ajax请求,饿哦有layout的视图 $this->renderAjax(视图,注入视图数组数据)
1 .视图在views目录下,一个控制器ID对应一个视图目录,TestControler的控制器ID是test,将对应@app/views/test视图目录,视图由yii\web\View组件管理。
输出:
1 .模型在@app\models目录下模型类名与模型文件名同名,Model一般继承与两个yii2的类,一个是关联到数据库的yii\db\ActiveRecord,这个时候如果类名(文件名)不能与表直接对应,需要通过tableName()公共静态方法显式的指定表名,另一个是继承自yii\base\Model类。
2 .简单操作
在@app\controllers目录的Test控制器中我们引入Article的命名空间
在index操作中实例化:
访问test/index操作,输出:
查一条数据试试
数据查询到了
控制器
控制器、操作与访问规则1 .控制器以【控制器名+Controller】命名在@app\controllers目录下,继承自yii\web\Controller。
2 .路由格式是【操作ID/操作ID】,控制器ID test-user相当于类名TestUserController。
3 .操作以 action + 方法名构成,操作ID say-hello相当于方法名actionSayHello。
在@app\controllers目录下建立Test控制器:
<?php namespace app\controllers; //定义命名空间 use yii\web\Controller; //引入命名空间 class TestController extends Controller{ public function actionIndex(){ echo 'hello word!'; } }
在浏览器访问http://localhost/yii2/web/index.php?r=test 输出hello word!
控制器的一些方法
1 .重定向 $this->redirect([‘test/index’])
2 .回到首页 $this->goHome()
3 .返回 $this->goBack()
4 .刷新当前页面 $this->refresh()
5 .渲染视图 $this->render(视图,注入视图数组数据)
6 .渲染没有layout的视图 $this->renderPartial(视图,注入视图数组数据)
7 .响应Ajax请求,饿哦有layout的视图 $this->renderAjax(视图,注入视图数组数据)
修改Test控制器的index操作
<?php namespace app\controllers; //定义命名空间 use yii\web\Controller; //引入命名空间 class TestController extends Controller{ public function actionIndex(){ //echo 'hello word!'; //重定向(这儿循环重定向了) //return $this->redirect(['test/index']); //回到首页 //return $this->goHome(); //返回 //return $this->goBack(); //刷新(这儿循环重定向了) //return $this->refresh(); } }
视图
视图规则1 .视图在views目录下,一个控制器ID对应一个视图目录,TestControler的控制器ID是test,将对应@app/views/test视图目录,视图由yii\web\View组件管理。
在TestController中调用return $this->render('index',['data'=>[1,2,3]]);
在@app\views\test\index.php中获取Test控制器注入的值
<?php foreach ($data as $key => $value) { echo $value."<br />"; } ?>
输出:
额,今天这编辑器传不了图片了?
模型
模型规则1 .模型在@app\models目录下模型类名与模型文件名同名,Model一般继承与两个yii2的类,一个是关联到数据库的yii\db\ActiveRecord,这个时候如果类名(文件名)不能与表直接对应,需要通过tableName()公共静态方法显式的指定表名,另一个是继承自yii\base\Model类。
2 .简单操作
创建一个测试库yii2basic:
CREATE DATABASE yii2basic; USEyii2basic;
创建一个文章表
DROP TABLE IF EXISTS `article`; CREATE TABLE `article`( `id` int unsigned not null auto_increment, `title` varchar(100) not null default '' comment '标题', `desc` varchar(500) not null default '' comment '描述', `content` text not null comment '内容', `click` int(8) unsigned not null default 100 comment '点击数', `status` tinyint(1) not null default 1 comment '状态', `pubdate` int(10) unsigned not null default 0 comment '录入时间戳', primary key(`id`) )ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='文章表' AUTO_INCREMENT=1;
插入测试数据:
NSERT INTO `yii2basic`.`article`(`title`,`desc`,`content`) VALUES('测试标题1','测试描述1','测试内容1'); INSERT INTO `yii2basic`.`article`(`title`,`desc`,`content`) VALUES('测试标题2','测试描述2','测试内容2');
配置数据库信息在@app\config目录下的db.php:
<?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2basic', 'username' => 'root', 'password' => '123456', 'charset' => 'utf8', ];
在@app\models目录下创建Article.php,类Article继承自ActiveRecord,类名与表明一样,所以不用显式的指定表名
<?php namespace app\models; use yii\db\ActiveRecord; class Article extends ActiveRecord{ }
在@app\controllers目录的Test控制器中我们引入Article的命名空间
use app\models\Article;
在index操作中实例化:
$article = new Article(); echo '<pre>'; var_dump($article); echo '</pre>';
访问test/index操作,输出:
查一条数据试试
Test控制器的index操作中我们查询一条数据,当然,我们也可以不用use命名空间,但是每次都要指定命名空间全路径,有点麻烦:
<?php namespace app\controllers; //定义命名空间 use yii\web\Controller; //引入命名空间 class TestController extends Controller{ public function actionIndex(){ $article = new \app\models\Article(); $article = \app\models\Article::findOne(1); echo '<pre>'; var_dump($article); echo '</pre>'; } }
数据查询到了
相关文章推荐
- Yii2实用基础学习笔记(二):Html助手和Request组件
- Yii2实用基础学习笔记(三):Url助手与分页组件
- Yii2实用基础学习笔记(四):模型验证
- Yii2实用基础学习笔记(五):CURD
- 大学里TP无线路由器转AP模式/接入模式
- Yii2提交表单提示无法验证
- yii2 慢执行日志
- ThinkPHP3.2.3 勾选子级自动选择父级
- PHP购物车代码
- PHP模板引擎(smarty)
- PHP文件操作
- PHP输出文件夹下的所有子目录
- PHP模板引擎(Smarty)
- PHPMailer实现邮件发送
- php 控制页面跳转
- php 控制页面跳转
- php 控制页面跳转
- thinkphp的create方法
- thinkphp模型的自动验证
- php的异常处理