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'

  

*/ 
    
}

 

posted @ 2025-06-15 10:56  fsl  阅读(11)  评论(0)    收藏  举报