一个 Yii + vue 项目(3) 解决跨域、数据库配置
来源:互联网 发布:淘宝虚拟代理挣钱吗 编辑:程序博客网 时间:2024/06/03 08:34
ok,有了基础的环境,就可以写功能了,首先要实现的功能就是 登陆验证,这个时候我们还需要建一个数据库,我在本地建了个数据库,添加了一个简单的表 user:
user 表的 name 字段是用来存储用户的名字的,而 username 和 password 则是对应的账号密码,考虑到大多数人反感填太多注册信息,只留了个手机号的字段,为之后可能存在的逻辑做预留。
之前细心的童鞋可能发现我用了两个域名,yii.com 和 vue.com ,于是在愉快地 ajax 通讯前还需要解决一下跨域问题。
利用 yii2 的 Cors过滤器:
home/controllers/SiteController.php
<?phpnamespace app\home\controllers;use yii\filters\Cors;use yii\helpers\ArrayHelper;use yii\web\Controller;class SiteController extends Controller{ public $defaultAction = 'test'; public function behaviors() { return ArrayHelper::merge([ [ 'class' => Cors::className(), 'cors' => [ 'Origin' => ['http://vue.com'], 'Access-Control-Allow-Credentials'=> true, ], ], ], parent::behaviors()); } public function actionTest(){ echo 'Hello World'; }}
如果对 yii2 过滤器还不了解的点这里,至于这里用到的 ArrayHelper 助手类,也建议了解一下。
ok,后端搞定了,前端也要配合用跨域提交,我在 src/assets/js/ 添加了一个公用的 js 文件 public.js
import $ from 'jquery';export const $post = (url, data)=>{ return $.ajax({ url: url, data: data, type: 'post', crossDomain: true, xhrFields: { withCredentials: true } })}export const $get = (url) => { return $.ajax({ url: url, type: 'get', crossDomain: true, xhrFields: { withCredentials: true } })}
然后在 app.vue 中引用:
<template> <div id="app"> <button @click='post'>点击</button> </div></template><script> import {$post, $get} from './assets/js/public' export default { name: 'app', methods: { post (){ $post('http://yii.com', {data: 'msg'}) .then(console.log) } } }</script>
点击效果如图,完美解决跨域问题。
跨域解决了,还需要配置一下数据库,在yii config/web.php 中加入数据库组件:
<?php$params = require(__DIR__ . '/params.php');$db = require(__DIR__ . '/db.php');$config = [ 'id' => 'demo', // 应用id 'params' => $params, // Yii::$app->params 的值 'language' => 'zh-CN', // 语言中文 'basePath' => dirname(__DIR__), // 'bootstrap' => [], // 'defaultRoute' =>'home', // 默认路由 'components' => [ /* 请求处理组件 */ 'request' => [ 'enableCookieValidation' => false, 'enableCsrfValidation' => false, ], /* 路由美化组件 */ 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ], /* 数据库组件 */ 'db' => $db, ], 'modules' => [ /* home模块 */ 'home' => 'app\home\module' ]];return $config;
真正的数据库配置在同目录 db.php 中:
<?phpreturn [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=test', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8',];
至于 request 组件的配置是关闭 yii2 默认的 表单验证和cookie验证的,这两个在前后端分离的情况下没啥用,不关则会影响 ajax 。数据库配置好就要建 AR 类了,这个等明天再讲好了。
阅读全文
0 0
- 一个 Yii + vue 项目(3) 解决跨域、数据库配置
- 一个 Yii + vue 项目(0)
- 一个 Yii + vue 项目(1)
- 一个 Yii + vue 项目(2)
- 一个 Yii + vue 项目(5)vue路由、yii验证码
- 一个 Yii + vue 项目(4)AR类简单操作
- 一个 Yii + vue 项目(6)yii模型、多模块登陆
- vue-cli搭建项目解决跨域问题
- yii 2.0 配置数据库(三)
- Yii之数据库配置
- vue项目如何使用nginx配置跨域
- 使用VUE-CLI构建一个项目基本的配置
- vue项目搭建(vue-cli)以及其他配置
- 新建一个vue项目
- 搭建一个VUE项目
- vue 新建一个项目
- 新建一个vue项目
- 初始化一个vue项目
- FFmpeg 获取RTSP传过来的视频数据并保存成文件
- 交叉编译
- 链式队列
- 最小生成树
- 失踪的7(P1590&NOIP水题测试(2017082301))
- 一个 Yii + vue 项目(3) 解决跨域、数据库配置
- Android属性动画完全解析(上),初识属性动画的基本用法
- ASO
- 1277 字符串中的最大值 (kmp)
- HDU 6166 Senior Pan (多源多汇最短路+集合的二进制划分 17多校第九场第6题)
- unix网络编程——time 服务器和客户端的实现
- 四位数字转中文金额读法(Java疯狂讲义第4章课后练习)
- Python基本入门6--IO
- Java开发学习路线图