Yii 使用vue 的测试代码
安装必要插件
composer require yiisoft/yii2-httpclient
composer require --prefer-dist yiisoft/yii2-imagine
composer require --prefer-dist yiisoft/yii2-redis
php yii serve --port=8888
config/web.php 配置redis 和 路由
1 'components' => [ 2 32 'db' => $db, 33 'redis' => [ 34 'class' => 'yii\redis\Connection', 35 'hostname' => 'ip', 36 'port' => 6379, 37 'database' => 0, 38 'password' =>'密码' 39 ], 40 'urlManager' => [ 41 'enablePrettyUrl' => true, 42 'showScriptName' => false, 43 'rules' => [ 44 'say/<message:\w+>' => 'site/say' , 45 'get-users' => 'site/get-users', 46 ], 47 ], 48 /* */ 49 50 51 ]
view文件夹中使用vue 用api方式发送json数据
<div id="app">
<ul>
<li v-for="user in users" :key="user.population">
{{ user.name }} - {{ user.code }}
</li>
</ul>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<script>
new Vue({
el: '#app',
data: {
users: []
},
mounted() {
fetch('/site/get-users')
.then(res => res.json())
.then(data => {
if(data.status === 'success') {
this.users = data.data;
}
});
}
});
</script>
controller 文件夹中使用 控制器挂载一个视图,数据通过api方式传给页面,进行数据和模板分离
<?php namespace app\controllers; use Yii; use yii\filters\AccessControl; use yii\web\Controller; use yii\web\Response; use yii\filters\VerbFilter; use app\models\LoginForm; use app\models\ContactForm; use app\models\Country; class SiteController extends Controller {/** * Displays homepage. * * @return string */ public function actionIndex() { return $this->render('index'); } /** * Login action. * * @return Response|string */ public function actionLogin() { if (!Yii::$app->user->isGuest) { return $this->goHome(); } $model = new LoginForm(); if ($model->load(Yii::$app->request->post()) && $model->login()) { return $this->goBack(); } $model->password = ''; return $this->render('login', [ 'model' => $model, ]); } /** * Logout action. * * @return Response */ public function actionLogout() { Yii::$app->user->logout(); return $this->goHome(); } /** * Displays contact page. * * @return Response|string */ public function actionContact() { $model = new ContactForm(); if ($model->load(Yii::$app->request->post()) && $model->contact(Yii::$app->params['adminEmail'])) { Yii::$app->session->setFlash('contactFormSubmitted'); return $this->refresh(); } return $this->render('contact', [ 'model' => $model, ]); } /** * Displays about page. * * @return string */ public function actionAbout() { return $this->render('about'); } public function actionSay($message = 'Hello') { $message=Yii::$app->request->get('message'); // 获取 country 表的所有行并以 name 排序 $countries = Country::find()->orderBy('name')->all(); //var_dump($countries); //return $this->render('say', ['message' => $message]); $data = Yii::$app->db->createCommand('SELECT * FROM Country WHERE code=:code') ->bindValue(':code', 'AU') ->queryOne(); var_dump($message); $value = Yii::$app->redis->get('token_data'); var_dump($value); Yii::$app->redis->set('xxxxxx', 'Alice'); // 存储字符串 Yii::$app->redis->setex('yyyyyy', 3600, 'temp_data'); // 带过期时间(秒) /* $data = ['status' => 200, 'message' => $message]; \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return $data; */ } public function actionUsers() { return $this->render('user'); } public function actionGetUsers() { $users = Country::find()->asArray()->orderBy('name asc')->all(); /* $users = Country::find()->asArray()->column();//返回查询结果中的第一列的值。 $users = Country::find()->asArray()->scalar();// 返回查询结果的第一行中的第一列的值。 $users = Country::find()->asArray()->one();// 根据查询结果返回查询的第一条记录。 $users = Country::find()->asArray()->count();// 返回记录的数量。 $exists = Country::find()->where(['code' => 'CN'])->exists(); if ($exists) { echo "存在cn的用户"; } else { echo "不存在名为cn的用户"; }
*/ $command = Yii::$app->db->createCommand("SELECT s.name,c.* FROM students s JOIN students_courses sc ON s.student_id = sc.student_id JOIN courses c ON sc.course_id = c.course_id where s.name=:categoryName"); $command->bindValue(":categoryName", 'alice'); $users = $command->queryAll(); return $this->asJson([ 'status' => 'success', 'data' => $users ]); }
$sql = 'SELECT * FROM country WHERE code=:code';
$country = Country::findBySql($sql, [':code' => 'DE'])->asArray()->all();
var_dump($country);
$country = Country::findOne([
'code' => 'US'
]);
$country->population=100000;
$country->save();//->update()
$country = Country::findOne([
'code' => 'XT',
'population' => 3666,
]);
$country->delete();
$country=new Country();
//插入
$country->code='XT';
$country->name='new0';
$country->population=3666;
$country->save();////->insert()
/* 多对多 CREATE TABLE students ( student_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) ); CREATE TABLE courses ( course_id INT AUTO_INCREMENT PRIMARY KEY, course_name VARCHAR(100) ); CREATE TABLE students_courses ( student_id INT, course_id INT, PRIMARY KEY (student_id, course_id), FOREIGN KEY (student_id) REFERENCES students(student_id), FOREIGN KEY (course_id) REFERENCES courses(course_id) ); insert into students (name) values ('alice'),('bob'); insert into courses (course_name) values ('数学'),('语文'); insert into students_courses(student_id ,course_id) values(1,1),(1,2),(2,2); SELECT s.name,c.* FROM students s JOIN students_courses sc ON s.student_id = sc.student_id JOIN courses c ON sc.course_id = c.course_id where s.name='alice'
*/ }

浙公网安备 33010602011771号