zoukankan      html  css  js  c++  java
  • Yii2 的安装及简单使用

    前段时间第一次使用Yii2框架,碰到了一些问题,这里记录一下。

    Yii2安装:通过composer安装

    1、首先要安装composer,我在另外一篇博客中介绍了如何在Windows下安装composer

    2、全局设置 Composer 使用中国镜像:

    composer config -g repo.packagist composer https://packagist.phpcomposer.com

    3、安装composer-asset-plugin(如果不安装composer-asset-plugin后面安装yii2时会出现问题,这里默认安装最新版)

    composer global require "fxp/composer-asset-plugin"

    4、(1)安装基础版,projectName是自己的项目名。

    composer create-project --prefer-dist yiisoft/yii2-app-basic projectName

    (2)安装高级版。(高级版区分了前后台目录backend,frontend)

    composer create-project --prefer-dist yiisoft/yii2-app-advanced projectName

    :高级版安装后需要初始化,双击根目录下的"init.bat"文件,选择"0"(表示开发环境),之后选择"yes"就可以了,会自动生成入口文件。

    5、配置域名信息就可以访问了。(高级版需要分别配置前后台域名)

    可能出现的问题:

    安装下来后可能会出现的问题:找不到vendor文件夹

    原因:composer-asset-plugin没有安装或者版本太低

    解决办法:找到文件的根目录,即composer.json文件目录,打开命令行执行:composer update

    Yii 2的简单使用:

    1、路由优化

    找到 /frontend/config/main.php 文件,找到以下代码,去掉注释,运行后发现可以去掉"?r="使用"/"代替,但是还是不能去掉index.php。

    'urlManager' => [
        'enablePrettyUrl' => true,   // 美化url去掉 ?r=
        'showScriptName' => false,   // 隐藏index.php
        'rules' => [
        ],
    ],

    要去掉index.php,还需要在入口文件下添加.htaccess文件,文件内容如下:

    # use mod_rewrite for pretty URL support
    RewriteEngine on
    # if a directory or a file exists, use the request directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # otherwise forward the request to index.php
    RewriteRule . index.php

    :这个需要前后端都配置一遍。

    2、驼峰命名路径访问

    在yii2中如果使用驼峰命名,则默认使用"-",如要访问UserAdminController控制器下的actionTestUser方法,则访问路径为:/user-admin/test-user

    3、使用post方法访问

    在Yii2中如果不做处理,使用post访问会报错。这是因为Yii2使用post请求时默认会使用CSRF验证。

    这里可以在表单中加入验证或者后台可以取消掉CSRF验证。

    方法一:在表单中加入验证:(如果能使用这种方法最好)

    <input name="_csrf" type="hidden" id="_csrf" value="<?= Yii::$app->request->csrfToken ?>" />

    方法二:全局配置,在配置文件中加入 'enableCsrfValidation' => false

    在config文件夹下找到"components"配置下的"request"配置,在里面加入'enableCsrfValidation' => false表示取消掉CSRF验证。

    方法三:局部配置,在单个控制器下配置

    可以在单个控制器下添加代码:

    public $enableCsrfValidation = false;

    这样在这个控制器下的方法就可以使用post请求了。

  • 相关阅读:
    Block定制开发小记
    三个方法解决error: use of moved value
    Rust踩坑日记
    动态竞争
    求数组差/交集函数-php数组函数(二)
    深度完整的了解MySQL锁
    PHP 结合前端 ajax 爬取网站信息后, 向指定用户发送指定短信;
    Nginx配置 隐藏入口文件index.php
    如何用纯 CSS 创作一个按钮文字滑动特效
    Laravel学习:请求到响应的生命周期
  • 原文地址:https://www.cnblogs.com/woods1815/p/10745484.html
Copyright © 2011-2022 走看看