• 安装

composer create-project --prefer-dist laravel/laravel=6.0 laravel6_0
  • 单独给项目修改源

可以在项目的conposer.json文件下面直接添加下面代码,改变源

    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://mirrors.aliyun.com/composer/"
        }
    }
  • 全局配置源

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • 安装配置Laravel IDE Helper

  • 下载

composer require --dev barryvdh/laravel-ide-helper
composer require --dev "doctrine/dbal: ~2.3"
  • 导出配置文件

php artisan vendor:publish --provider="Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider" --tag=config
  • 修改配置文件ide-helper.php(自动为链式操作注释):
'include_fluent' => true,
  • 生成_ide_helper.php
php artisan ide-helper:generate
  • PhpStorm 集成_ide_helper.php,先将 _ide_helper.php拷贝到其他目录中,如下图

image-20200424210822098.png

  • 然后,在phpstorm中的external libraries中将这个目录包含,具体参考下面网址
https://learnku.com/articles/35377
  • 特别重点,如果想要模型也可提示的话,在模型的上面要添加下面代码

/**
 * @mixin \Eloquent
 */

如下图所示:

image-20200424211128154.png

  • 安装验证码

composer require mews/captcha

注册providers,在config/app.php的providers数组里面添加:

Mews\Captcha\CaptchaServiceProvider::class,

注册aliases,在config/app.php里面的aliases数组中添加:

'Captcha' => Mews\Captcha\Facades\Captcha::class,

生成配置文件,在 Composer 命令行中输入如下命令:

php artisan vendor:publish

选择生成验证码的对应数字后,在config目录会生成captcha.php

使用示例:

<div class="row">
    <div class="col-md-8">
        <input type="text" class="form-control {{$errors->has('captcha')?'parsley-error':''}}" name="captcha"
               placeholder="captcha">
    </div>
    <div class="col-md-4">
        <img src="{{captcha_src()}}" style="cursor: pointer" onclick="this.src='{{captcha_src()}}'+Math.random()">
    </div>
    @if($errors->has('captcha'))
        <div class="col-md-12">
            <p class="text-danger text-left"><strong>{{$errors->first('captcha')}}</strong></p>
        </div>
    @endif
</div>

验证,扩展包使用了 自定义验证规则 方式扩展了验证规则,我们只要在对应的 Controller 添加以下的规则即可:

public function store(Request $request)
{
    $this->validate($request, [
        'captcha' => 'required|captcha'
    ]);
}
  • 更改时区,在config/app.php

'timezone' => 'PRC',
  • 设置中文

下载中文语言包

composer require caouecs/laravel-lang:~3.0

For Laravel 6.x : run 
composer require caouecs/laravel-lang:~5.0

将压缩包中 src/zh-CN 文件夹拷贝到项目目录的 resources/lang 文件夹下,修改config/app.php

'locale' => 'zh-CN',

由于captcha在中文包中没有中文解释,所以需要手动添加中文解释,具体操作如下:
打开 resources/zh-CN/validation.php,在总数组中追加如下键值对:

'captcha'                  => ':attribute 不正确。',

在 attributes 数组中追加如下键值对:

'captcha'               => '验证码',
  • 解决在执行php artisan migrate时提示字符过长的问题

    • laravel 5.4 改变了默认的数据库字符集,现在utf8mb4包括存储emojis支持。如果你运行MySQL v5.7.7或者更高版本,则不需要做任何事情。
    • 提示:1071 Specified key was too long; max key length is 1000 bytes
    • 解决方法

    在appProvidersAppServiceProvider.php添加

    use Illuminate\Support\Facades\Schema; //add fixed sql
    
    public function boot()
    {
    Schema::defaultStringLength(191); //add fixed sql,不能是255,255的话,会导致有些索引还是太长
    }
  • 创建迁移文件

php artisan make:migration create_表名_table
  • 执行迁移文件

  • 如果是第一次执行迁移文件的话,需要运行下面的代码来生成migraitons表
php artisan migrate:install
  • 如果不需要系统自带的migraiton,需要到database里面删除
  • 然后运行如下命令,执行
php artisan migrate

该命令会在数据库中生成对应的表,并在migrations中记录

  • 可以直接在生成模型的时候直接生成数据库迁移文件

//User为模型名称
php artisan make:model User -m
  • 定义migrate时string的默认长度,这里定义为255

app/Providers/AppServiceProvider.php

    public function boot()
    {
        //在这里定义数据库默认的string的长度
        Schema::defaultStringLength(255); //add fixed sql
    }
  • 加解密

在laravel中,用自带的encrypt()和decrypt()方法加密解密

$str = "password";
//加盐加密,每次加密之后生成的字符串不同。
$encryptStr = encrypt($str);
//解密
$decryptStr = decrypt($encryptStr);
dd($decryptStr==$str)
  • 中间件

    • 生成中间件
artisan make:middleware IsLogin
  • 注册中间件

image-20200419155010403.png

'is_login' => \App\Http\Middleware\IsLogin::class
  • 编写中间件逻辑
    public function handle($request, Closure $next)
    {
        if(session()->has('user')){
            return $next($request);
        }else {
            return redirect('admin/login')->with('errors','请先登录!');
        }
    }
  • 模板的父子级继承

    1. 在父模板不同的地方用@yield('区块名字')来占位
    2. 在子模板中,开头先写上@extends('父模板')
    3. 在子模板中,用@section('区块名字')和@endsection来替换父模板中的占位
  • 修改分页模板显示为中文上一页

image-20200421232156705.png

  • 解决Ajax中CSRF问题

    • 在公共的js.blade.php中添加一个meta
    <meta name="csrf-token" content="{{ csrf_token() }}">
- 在引入的layui.js后面设置ajax请求头
<script>
    layui.use(['form', 'layer', 'jquery'],
        function () {
            $ = layui.jquery;
            $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
        });
</script>

image-20200422125331921.png

- 这样每个页面使用ajax时就不用再单独设置csrf了
  • 表单方法伪造

HTML 表单不支持 PUT 、PATCH 或 DELETE 行为。所以当你要从 HTML 表单中调用定义了 PUT、 PATCH 或 DELETE 行为的路由时,你将需要在表单中增加一个隐藏的 _method 输入标签。使用 _method 字段的值作为 HTTP 的请求方法:

<form action="/foo/bar" method="POST">
    @method('PUT')
    @csrf
</form>
  • 返回json

return response()->json(
            [
                'name' => 'huage',
                'age' => 26,
            ]
        );
  • Browsersync 重新加载

在webpack.mix.jsK 添加下面代码,将地址改成你自己的,成功后,会自动打开浏览器,还会开出另外一个端口号,当代码改动时,会自动编辑,实实刷新.

mix.browserSync('http://huage.com/admin/index');

image-20200423232941423.png

  • 重新生成 Composer 的自动加载器

composer dump-autoload
  • 配置faker工厂为中文

在config/app.php中添加如下代码:

//    配置faker为中文
    'faker_locale' => 'zh_CN',
  • 创建资源控制器时直接指定模型会更加方便

例如:在Admin文件夹下生成资源控制器,指定Model下的User模型

php artisan make:controller --resource --model=Model\User Admin\NameController
  • 在show,edit,update,destroy方法中,形参加了模型参数限制,自动绑定了模板传递过来的实例,如:
    public function show(User $user)
    {
        //
    }
  • 在blade模板中,可以在route方法中直接传递当前实例,如:
{{ route('user.create',$user) }}

模板路由route传递参数.png

Last modification:July 8th, 2020 at 01:05 am
哎呀呀,大家随意,随意就好!