折腾一下YII2中的RESTful开发(上)
1.建表语句
CREATE TABLE `users` (
`user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_name` varchar(50) NOT NULL DEFAULT "",
`user_pass` varchar(255) NOT NULL DEFAULT "",
`user_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
2.模型
modelsUsers.php
:
<?php
namespace appmodels;
use yiidbActiveRecord;
class Users extends ActiveRecord
{
//指定表名称
static public function tableName()
{
return "users";
}
}
3.控制器
注意此时的控制是要继承ActiveController
了
class UserController extends ActiveController
{
public $modelClass = "appmodelsUsers";
}
4.配置UrlRule,config/web.php
"urlManager" => [
"enablePrettyUrl" => true,
"showScriptName" => false,
"rules" => [
["class" => "yii
estUrlRule","controller" => "user"]
],
],
配置完成之后,访问http://localhost/yiiserver/web/index.php/users
默认是xml文档,其中有我们表的2条数据了。
如果我们要看user_id为1的:
http://localhost/yiiserver/web/index.php/users/1
5.设置响应格式
<?php
namespace appcontrollers;
use yii
estActiveController;
use yiiwebResponse;
class UserController extends ActiveController
{
public $modelClass = "appmodelsUsers";
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors["contentNegotiator"]["formats"]["text/html"] = Response::FORMAT_JSON;
return $behaviors;
}
}
现在就返回的是JSON格式了。
6. 重写动作
public function actions()
{
$action = parent::actions(); // TODO: Change the autogenerated stub
unset($action["index"]); //从所有动作中删除index
}
public function actionIndex(){
echo "重写index";
}
查看ActiveController
类的源码可以知道默认有几个动作,比如默认就有index
,我们要想自定义index
就必须在actions()
方法中删除。
7.POST数据
需要重写model的scenarios()
,models/Users.php
:
public function scenarios()
{
return [
"default"=>["user_name","user_pass"]
];
}
表示可以对user_name和user_pass
2个字段进行插入或者修改。
控制器代码:
<?php
namespace appcontrollers;
use yii
estActiveController;
use yiiwebResponse;
class UserController extends ActiveController
{
public $modelClass = "appmodelsUsers";
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors["contentNegotiator"]["formats"]["text/html"] = Response::FORMAT_JSON;
return $behaviors;
}
public function init()
{
$this->enableCsrfValidation = false;
}
}
发送一个post试试:
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: 带着实例继续学习(2):父子组件通信之自定义事件
- 下一篇: 用webpack把我们的业务模块分开打包