laravel+vue项目

laravel+vue项目

手册地址:https://laravel-china.org/docs/laravel/5.6[中文文档]

手册地址:https://laravel.com/[英文文档]

熟悉基本命令操作

下载laravel框架

|--composer create-project --prefer-dist laravel/laravel blog

数据库配置

1、修改.env文件

创建控制器

1.php artisan make:controller Admin/LoginController[控制器放在app/Http/Controllers/Admin]    

创建模型

1.php artisan make:model User
2.模型默认放在app/
3.我们可以这样创建:php artisan make:model Model/User,这样模型会放在app/Model/
4.php artisan make:model Model/Admin -m  创建模型的同时生成迁移文件

模板文件

1.命名:index.blade.php
2.位置:resources/views/

创建迁移

1.php artisan make:migration create_users_table
2.手册:数据库--数据库迁移

下载laravel-ide-helper[参考其手册]

    |--在composer安装包里面搜索laravel-ide-helper
    |--下载:composer require barryvdh/laravel-ide-helper
    |--Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,这句话添加到config/app.php里面providers
    |--执行php artisan ide-helper:generate
    |--如果执行完成没有提示,重启ide    

后台实现功能

1.登录
2.修改密码
3.标签添加
4.课程添加

准备工作(运行迁移和数据填充)

1.创建Admin模型同时创建迁移文件: php artisan make:model Model/Admin -m
2.修改迁移文件,增加字段【参考手册:数据库--数据迁移】
3.执行迁移:php artisan migrate 
4.运行迁移时报错:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes      
    |--4.1.方式一:切换mysql版本5.7
    |--4.2(建议采用).方式二:config/database.php找到mysql,修改如下
        'charset' => 'utf8',
        'collation' => 'utf8_unicode_ci',
    |--4.3.方式三:app/Providers/AppServiceProvider.php里面boot方法:
        \Illuminate\Support\Facades\Schema::defaultStringLength(191);
    |--注意:三种方式解决,选择其一即可
5.factory(模型工厂)进行数据填充
    |--5.1.参考是手册:数据库--数据填充--使用模型工厂
    |--5.2.文件位置:database/factories/
    |--5.3.将database/factories/UserFactory.php复制一份进行修改,修改如下:
        $factory->define(App\Model\Login::class, function (Faker $faker) {

            return [
                'username' => $faker->name,
                'password' => bcrypt('admin888'),
            ];
        });
    |--5.4.在phpstorm终端(Terminal)执行:php artisan tinker,注意这个时候会打开shell,如下格式:
            ➜  
            Psy Shell v0.9.3 (PHP 7.1.8 — cli) by Justin Hileman
            >>> 
    |--5.5.注意这个时候继续再终端执行:factory(App\Model\Login::class,3)->create();
    |--5.6.当看到有三条数据时(查看logins表有三条数据),执行成功,退出终端即可。

后台登录

1.使用laravel自带的用户认证
2.配登录post路由(routess/admin/admin.php)
3.修改app/config/Auth.php,修改guards、providers  
4.修改app/Model/Admin.php,模型中继承:\Illuminate\Foundation\Auth\User,参考app/User.php
5.请求登录前,请确认form表单提交方式和提交地址、表单name属性
6.在表单中增加:{{csrf_field ()}}【参考手册:基础功能--csrf保护】
7.点击登录请求代码:[手册:安全相关--用户认证]
            if($request->isMethod('post')){
                $status = Auth::guard('admins')->attempt([
                    'username' => $request->input('username'),
                    'password' => $request->input('password')
                ]);
                if($status){
                    return redirect ('/admin/entry');
                }
                return redirect ('/admin/login')->with ('error','用户名或者密码不正确');
            }
8.模板中错误提示
            @if(session('error'))
                    <p class="text-muted text-center alert alert-danger" style="margin-bottom: 0"><small>{{session('error')}}</small></p>
            @endif

中间件进行登录验证

1.手册参考:基础功能--中间件
2.创建中间件:php artisan make:middleware AdminMiddleware
3.中间件注册:app/Http/Kernel.php
        |--$routeMiddleware里面增加:'admin.auth'=>AdminMiddleware::class,【注意导入命名空间:use App\Http\Middleware\AdminMiddleware;】
4.中间件中增加验证【参考中间件中--注册中间件】
            if (!Auth::guard('admin')->check()) {
                return redirect('/admin/login');
            }        
5.控制器中构造方法: $this->middleware('admin.auth'); 执行登录验证

修改密码

1.配路由、建对应的控制器方法
2.验证
   |--手册参考:基础功能--表单验证--表单请求验证
           |--表单请求验证:php artisan make:request LoginRequest;新生成的类保存在 app/Http/Requests 目录下
           |--注意该authorize方法,return true
           |--rules方法写验证规则,模板显示验证错误消息参考文档:基础功能--表单验证--显示验证错误
           |--message方法完成提示消息。自定义错误消息参考文档:基础功能--表单验证--自定义错误消息
           |--changePass方法,点击提交按钮请求地址,AdminPost注入进来
           |--两次密码是否一致验证:注意确认密码name:password_confirmation
           |--增加自定义验证规则,验证原始密码是否正确       
                    public function authorize()
                   {
                    //参考手册:安全相关--用户认证--确定当前用户是否认证
                       return Auth::guard('admin')->check();
                   } 
                   //自定义验证规则:
                    public function addValidator(){
                        //参考手册:基本功能--表单验证--自定义验证规则--使用扩展
                        Validator::extend('check_pasword', function ($attribute, $value, $parameters, $validator) {
                            //根据哈希值验证密码参考手册:安全先关--哈希--基本用法
                            return Hash::check($value,Auth::guard('admin')->user()->password);
                        });
                    }
                    //验证规则
                    public function rules()
                    {
                        //调用自定义验证器
                        $this->addValidator();
                        return [
                            'original_password' => 'required|check_pasword',
                            'password' => 'required|confirmed',
                            'password_confirmation' => 'required',
                        ];
                    }
                    //提示消息
                    public function messages()
                    {
                        return [
                            'original_password.required' => '原始密码不能为空',
                            'original_password.check_pasword' => '原始密码不正确',
                            'password.required'  => '新密码不能为空',
                            'password.confirmed'  => '确认密码跟新密码不一致',
                            'password_confirmation.required'  => '确认密码不能为空',
                        ];
                    }
|--提示消息
        |--第三方提示模板
        |--composer安装包列表中搜索 flash
        |--composer require laracasts/flash
        |--config/app.php增加服务提供者: Laracasts\Flash\FlashServiceProvider::class,
        |--php artisan vendor:publish --provider="Laracasts\Flash\FlashServiceProvider";在resource/views/vendor生成文件
        |--@include('flash::message')
        |--flash()->overlay('Modal Message', 'Modal Title')
            |--他的模板中增加模态框显示代码
        |--return redirect()->back();    

文件上传

    1.宝塔面板安装php扩展fileinfo[软件管理--php7.1--设置--安装扩展--fileinfo]
        备注:如果安装不上把交换分区设置成1000【位置:Linux工具箱 1.4--设置--Swap/虚拟内存--添加Swap】
    2.config/filesystems.php在disks新增一个
        'attachment' => [
        'driver' => 'local',
        'root' => 'attachment',
        ],            

猜你喜欢

转载自blog.csdn.net/zgb4687199/article/details/80848271