美文网首页
laravel(四)

laravel(四)

作者: 空留灯半盏 | 来源:发表于2018-07-27 10:59 被阅读0次

    laravel(四)

    视图(页面布局)

    页面布局: 指提取网站视图公共部分,其他视图文件继承或引入

    好处: 减少冗余

    common.png

    语法:

    @yield('标识')                父(公共区域)定义内容片段,子填充
    @extends('标识')          子继承父(公共区域)
    @section('标识', '默认值')   子填充父(公共区域)文字
    @section('标识')              子填充父(公共区域)HTML代码
    存放子页面内容
    @endsection
    @include('视图标识', ['key' => 'value变量值']) 调取公共页面(一般多个子页面提取)
    

    创建common页面

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>laravel</title>
        <!-- Bootstrap CSS 文件 -->
        <link rel="stylesheet" href="{{ asset('admin/static') }}/bootstrap/css/bootstrap.min.css">
    
        <link rel="stylesheet" href="{{ asset('admin/static') }}/bootstrap/css/form.css">
    </head>
    <body>
    
    <div class="navbar navbar-default">
        <div class="container">
            <div class="navbar-header">
                <a href="/" class="navbar-brand">首页</a>
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#menu" aria-expanded="false">
                    <span class="sr-only">菜单折叠</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
    
            </div>
            <div class="collapse navbar-collapse" id="menu">
                <ul class="nav navbar-nav">
                    <li class="active"><a href="/">开发</a></li>
                    <li><a href="#">列表</a></li>
                    <li><a href="#">头条</a></li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">资讯 <span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">学习一</a></li>
                            <li><a href="#">学习二</a></li>
                            <li class="divider"></li>
                            <li><a href="#">技术学习</a></li>
                            <li class="divider"></li>
                            <li><a href="#">jq学习</a></li>
                        </ul>
                    </li>
                </ul>
                <form class="navbar-form navbar-left">
                    <div class="form-group">
                        <input type="text" class="form-control" placeholder="Search...">
                    </div>
                    <button type="submit" class="btn btn-default">搜索</button>
                </form>
                <ul class="nav navbar-nav navbar-right">
                    @if(!session('userinfo'))
                    <li><a href="{{ url('student/login')  }}">登录</a></li>
                    <li><a href="javascript:void();">注册</a></li>
                    @else
                        <li><a href="javascript:void();">欢迎 {{ Session::get('userinfo','管理员')  }}</a></li>
                        <li><a href="{{ url('student/logout')  }}">退出</a></li>
                    @endif
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">相关<span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">系列一</a></li>
                            <li class="divider"></li>
                            <li><a href="#">系列二</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </div>
    
    @yield('body')
    
    <!-- 尾部 -->
    <div class="jumbotron" style="margin:0;">
        <div class="container">
            <span>  @2017 laravel</span>
        </div>
    </div>
    
    <!-- jQuery 文件 -->
    <script src="{{ asset('admin/static') }}/jquery/jquery.min.js"></script>
    <!-- Bootstrap JavaScript 文件 -->
    <script src="{{ asset('admin/static') }}/bootstrap/js/bootstrap.min.js"></script>
    
    </body>
    <link rel="stylesheet" type="text/css" href="{{ asset('css') }}/sweetalert.min.css">
    <script type="text/javascript" src="{{ asset('js') }}/sweetalert.min.js"></script>
    <script type="text/javascript">
        @if (Session::has('tips'))
        swal("{{Session::get('tips')}}", "系统提示","{{Session::get('state')}}")
        @endif
    </script>
    </html>
    
    
    
    

    add页面

    @extends('admin.student.common')
    
    @section('body')
        <!-- 头部 -->
        <div class="jumbotron jump">
            <div class="container">
                <h2>玩转laravel</h2>
    
                <p> 玩转- laravel</p>
            </div>
        </div>
    
        <!-- 中间内容区局 -->
        <div class="container">
            <div class="row">
    
                <!-- 左侧菜单区域   -->
                <div class="col-md-3">
                    <div class="list-group">
                        <a href="{{ url('student/index')  }}" class="list-group-item ">学生列表</a>
                        <a href="javascript:void(0);" class="list-group-item active">新增学生</a>
                    </div>
                </div>
    
                <!-- 右侧内容区域 -->
                <div class="col-md-9">
    
                    <!-- 所有的错误提示 -->
                    <div class="alert alert-danger">
                        @if (count($errors) > 0)
                            <div class="alert alert-danger">
                                <ul>
                                    @foreach ($errors->all() as $error)
                                        <li>{{ $error }}</li>
                                    @endforeach
                                </ul>
                            </div>
                        @endif
    
                    </div>
    
                    <!-- 自定义内容区域 -->
                    <div class="panel panel-default">
                        <div class="panel-heading">新增学生</div>
                        <div class="panel-body">
                            <form class="form-horizontal" action="{{ url('student/add')  }}" method="post">
                                <div class="form-group">
                                    <label for="name" class="col-sm-2 control-label">姓名</label>
    
                                    <div class="col-sm-5">
                                        <input type="text" class="form-control" name="uname" id="name" placeholder="请输入学生姓名">
                                    </div>
                                    <div class="col-sm-5">
                                        <p class="form-control-static text-danger">{{ $errors->first('uname') }}</p>
                                    </div>
                                </div>
                                <div class="form-group">
                                    <label for="age" class="col-sm-2 control-label">密码</label>
    
                                    <div class="col-sm-5">
                                        <input type="text" class="form-control" name="pwd" id="age" placeholder="请输入密码">
                                    </div>
                                    <div class="col-sm-5">
                                        <p class="form-control-static text-danger">{{ $errors->first('pwd') }}</p>
                                    </div>
                                </div>
                                <div class="form-group">
                                    <label for="age" class="col-sm-2 control-label">年龄</label>
    
                                    <div class="col-sm-5">
                                        <input type="text" class="form-control" id="age" name="age" placeholder="请输入学生年龄">
                                    </div>
                                    <div class="col-sm-5">
                                        <p class="form-control-static text-danger">{{ $errors->first('age') }}</p>
                                    </div>
                                </div>
                                <div class="form-group">
                                    <label class="col-sm-2 control-label">性别</label>
    
                                    <div class="col-sm-5">
                                        <label class="radio-inline">
                                            <input type="radio" name="sex" value="1"  > 男
                                        </label>
                                        <label class="radio-inline">
                                            <input type="radio" name="sex" value="2" checked="checked"> 女
                                        </label>
                                    </div>
                                    <div class="col-sm-5">
                                        <p class="form-control-static text-danger"></p>
                                    </div>
                                </div>
                                <div class="form-group">
                                    <div class="col-sm-offset-2 col-sm-10">
                                        <button type="submit" class="btn btn-primary">提交</button>
                                    </div>
                                </div>
                            </form>
                        </div>
                    </div>
    
                </div>
            </div>
        </div>
    
    @endsection
    

    index 页面..等.

    @extends('admin.student.common')
    
    @section('body')
    
    <div class="jumbotron jump">
        <div class="container">
            <h2>玩转laravel-之首页</h2>
    
            <p> 玩转- laravel</p>
        </div>
    </div>
    
    <!-- 中间内容区局 -->
    <div class="container">
        <div class="row">
    
            <!-- 左侧菜单区域   -->
            <div class="col-md-3">
                <div class="list-group">
                    <a href="{{ url('student/index')  }}" class="list-group-item active">学生列表</a>
                    <a href="{{ url('student/add')  }}" class="list-group-item">新增学生</a>
                </div>
            </div>
    
            <!-- 右侧内容区域 -->
            <div class="col-md-9">
    
                <!-- 成功提示框 -->
                <div class="alert alert-success alert-dismissible" role="alert">
                    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                    <strong>成功!</strong> 操作成功提示!
                </div>
    
                <!-- 失败提示框 -->
                <div class="alert alert-danger alert-dismissible" role="alert">
                    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                    <strong>失败!</strong> 操作失败提示!
                </div>
    
                <!-- 自定义内容区域 -->
                <div class="panel panel-default">
                    <div class="panel-heading">学生列表</div>
                    <table class="table table-striped table-hover table-responsive">
                        <thead>
                        <tr>
                            <th>ID</th>
                            <th>姓名</th>
                            <th>年龄</th>
                            <th>性别</th>
                            <th>添加时间</th>
                            <th width="120">操作</th>
                        </tr>
                        </thead>
                        <tbody>
    
                        @foreach($students as $student)
                            <tr>
                                <th scope="row">{{ $student->id }}</th>
                                <td>{{ $student->uname }}</td>
                                <td>{{ $student->age }}</td>
                                <td>
                                    @if($student->sex  == 1)
                                        男
                                    @else
                                        女
                                    @endif
                                </td>
                                <td>{{ $student->created_at }}</td>
                                <td>
                                    <a href="">详情</a>
                                    <a href="{{  url("student/upd?id=$student->id ") }}">修改</a>
                                    <a href="{{  url("student/del?id=$student->id ") }}" onclick="return confirm('确定要删除吗?')">删除</a>
                                </td>
                            </tr>
                        @endforeach
    
                        </tbody>
                    </table>
                </div>
    
                <!-- 分页  -->
                <div>
                    {{ $students->links() }}
                </div>
    
            </div>
        </div>
    </div>
    
    @endsection
    

    会话技术

    session会话

    定义路由

    Route::get('/day4/t1', 'Admin\Day4Controller@t1');
    Route::get('/day4/t2', 'Admin\Day4Controller@t2');
    

    创建控制器方法

    语法:

    位置:app\config\session.php文件

    脚下留心:Laravel重写了session机制

    在config\session.php 中 将expire)on_close改为true // 浏览器关闭清空session

    HTTP Request 的session方法

    设置:            Session::put(键,值);
    获取指定:          Session::get(键 [,默认值])
    获取所有:          Session::all()
    判断:            Session::has(key)
    
    删除指定:          Session::forget(key) 
    删除所有:      Session::flush() 
    压入session数组:Session::push(key, value)
    获取后删除:     Session::pull(key) 
    闪存:            Session::flash(key, value)  
    辅助函数
    设置:session([键1=>值1,...,键n=>值n])
    获取:session(键)
    

    练习

    #设置session(需求:uname=itcast,age=18,stu=[uname=xiaoze,age=18])
    #获取指定uname和age
    #删除age指定
    #获取全部
    
    public function t1()
    {
        #设置session(需求:uname=itcast,age=18,stu=[uname=xiaoze,age=18])
        Session::put('uname', 'itcast');
        Session::put('age', '18');
        Session::put('stu', ['uname'=>'xiaoze', 'age'=>18]);
         #获取指定uname和age
        echo Session::get('uname');
        echo Session::get('age');
        #删除age指定
        Session::forget('age');
        #获取全部
        dd(Session::all());
    }
    

    Cookie会话

    设置:Cookie::make(键,值)

    获取:Cookie::get(键)

    $data = Cookie::make('username','itcast')
    return redirect(url('/day4/t2))->withCookie($data);
    echo Cookoe::get('username')
    

    中间件

    中间件:就是HTTP请求交给控制器方法前的过滤层

    将HTTP请求交给控制器方法前先交给另一个方法处理

    语法:

    语法:php artisan make:middleware 中间件名称

    位置:app\Http\Middleware

    步骤1:创建中间件

    步骤2:激活中间件(app\Http\Kernel.php)

    步骤3:使用修改路由声明哪些路由需要通过中间件过滤

    创建中间件

    php artisan make:middleware CheckTest
    

    激活中间件 http\kemel.php中

    protected $routeMiddleware = [
    
        //新增
    
        'CheckTest' => \app\http\middleware\CheckTest::class 
    
    ];
    
    
    

    laravel控制器数据验证

    JS验证表单数据:1-提高用户体验度,2-减少不必要的http请求

    PHP数据验证:增强安全性

    控制器直接使用validate方法

    $this->validate($request,验证规则 [,自定义提示信息])
    

    单独创建验证类

    语法:php artisan make:request 验证类名称   (注:Check模型名  大驼峰)
    位置:app\Http\Requests目录
    

    视同validator门面验证

    $validator = Validator::make(数组,验证规则 [,自定义提示信息])
    $validator->passes()            判断是否成功:true-成功没有问题,false-失败有问题
    $validator->fails()             判断是否失败:true-失败有问题,false-成功没问题
    $validator->messages()           获取错误信息
    

    验证规则

    required: 不能为空
    max:255最长255个字符,
    min:1最少1个字符
    email:验证邮箱是否合法
    confirmed:验证两个字段是否相同,如果验证的字段是password,则必须输入一个与之匹配的password_confirmation字段
    integer:验证字段必须是整型
    ip:验证字段必须是IP地址
    numeric 验证字段必须是数值
    max:value 验证字段必须小于等于最大值,和字符串,数值,文件字段的size规则一起使用。
    min:value 验证字段的最小值,对字符串、数值、文件字段而言,和size规则使用方式一致。
    size:value 验证字段必须有和给定值value想匹配的尺寸,对字符串而言,value是相应的字符数目,对数值而言,value是给定整型值;对文件而言,value是相应的文件字节数。
    string 验证字段必须是字符串
    unique:表名,字段,需要排除的ID
    
    规则手册:http://laravelacademy.org/post/6768.html#toc_17 
    &多学一招:多个验证规则可以通过 "|" 字符进行隔开
    
    直接使用validate方法
    #数据过滤
    #语法:$this->validate($request,验证规则 [,提示信息])
    $this->validate($request, [
        'uname' => 'required|min:3|max:8',
        'pwd' =>  'required|min:6|max:30',
        'age' => 'required|integer|between:1,100',
        'sex' => 'required|integer|between:1,2',
    ], [
        'uname.required' => '用户名必须',
        'uname.min' => '用户名至少3个字符',
    ]);
    

    输出视图

    @if (count($errors) > 0)
        <div class="alert alert-danger">
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif
    

    汉化提示信息

    &汉化提示信息
    1)下载:https://github.com/caouecs/Laravel-lang 
    2)将src\zh-CN移动到resources\lang\中并更名为zh_CN
    修改config\app.php文件
    
    将改成'locale' => 'zh_CN',
    删除自定义提示查看效果
    
    单独创建验证类
    创建验证类: php artisan make:request CheckStudent
    #输入内容:
    <?php
    
    namespace App\Http\Requests;
    
    use Illuminate\Foundation\Http\FormRequest;
    
    class CheckStudent extends FormRequest
    {
        public function authorize()
        {
            //是否开启验证:true-是,false-头
            return true;
        }
        
        public function rules()
        {
            if ($this->isMethod('get')) return [];
            return [
                'uname' => 'required|min:3|max:8',
                'pwd' =>  'required|min:6|max:30',
                'age' => 'required|integer|between:1,100',
                'sex' => 'required|integer|between:1,2',
            ];
        }
        
        public function messages()
        {
            return [
                'uname.required' => '用户名必须',
                'uname.min' => '用户名至少3个字符',
            ];
        }
    }
    

    控制器调用

    public function add(\App\Http\Requests\CheckStudent $request){
        xxx
    }
    
    使用validator门面控制器
    直接在控制器里进行验证
    #数据过滤
    $validator = Validator::make($postData, [
        'uname' => 'required|min:3|max:8',
        'pwd' =>  'required|min:6|max:30',
        'age' => 'required|integer|between:1,100',
        'sex' => 'required|integer|between:1,2',
    ]);
    //会否验证失败:true-验证失败,false-验证成功
    if ($validator->fails()) {
        //获取错误信息
        //dd($validator->messages());
        return redirect(url('/student/add'))->withErrors($validator);
    }
    

    显示单个错误

    语法:{{ $errors->first(name属性值) }}
    

    多表查询

    安装Laravel开发调试工具(注:同TP默认的Trace调试工具)

    文档:http://laravelacademy.org/post/2774.html

    composer require barryvdh/laravel-debugbar
    

    在config\app.php 注册激活

    'providers' => [
        Barryvdh\Debugbar\ServiceProvider::class,
    ]
    

    连表查询语法:

    DB::table(表1)/ 模型名
    leftJoin(表2,‘表1.公共字段’,‘=’,‘表2.公共字段’)
    ->get();
    
    查询构建器

    定义路由..

    创建控制器方法

    #练习(一对一关系:一篇文章属于一个用户)
    $articles = DB::table('article')->leftJoin('stu', 'article.uid', '=', 'stu.id')->get();
    foreach ($articles as $article)
    {
        echo '文章ID:'.$article->aid.',文章标题:'.$article->title.'<br />';
        echo '用户ID:'.$article->id.',用户昵称:'.$article->uname.'<hr />';
    }
    
    #练习(一对多关系:一个用户拥有多篇文章)
    $stus = DB::table('stu')->leftJoin('article', 'stu.id', '=', 'article.uid')->get();
    foreach ($stus as $stu)
    {
        echo '用户ID:'.$stu->id.',用户昵称:'.$stu->uname.'<br />';
        echo '文章ID:'.$stu->aid.',文章标题:'.$stu->title.'<hr />';
    }
    
    模型

    创建模型

    php artisan make:model Http\Models\Article
    php artisan make:model Http\Models\Stu
    

    模型对应表

    <?php
    
    namespace App\Http\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Stu extends Model
    {
        /**
         * 声明表名
         *
         * @var        string
         */
        protected $table = 'stu';
    }
    
    
    <?php
    
    namespace App\Http\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Article extends Model
    {
        /**
         * 声明表名
         *
         * @var        string
         */
        protected $table = 'article';
    }
    

    练习

    #练习(一对一关系:一篇文章属于一个用户)
    $articles = Article::leftJoin('stu', 'article.uid', '=', 'stu.id')->get();
    foreach ($articles as $article)
    {
        echo '文章ID:'.$article->aid.',文章标题:'.$article->title.'<br />';
        echo '用户ID:'.$article->id.',用户昵称:'.$article->uname.'<hr />';
    }
    
    #练习(一对多关系:一个用户拥有多篇文章)
    $stus = Stu::leftJoin('article', 'stu.id', '=', 'article.uid')->get();
    foreach ($stus as $stu)
    {
        echo '用户ID:'.$stu->id.',用户昵称:'.$stu->uname.'<br />';
        echo '文章ID:'.$stu->aid.',文章标题:'.$stu->title.'<hr />';
    }
    
    关联模型

    一对一

    步骤1:定义模型
    public function  推荐表名 () 
    {
    return $this->hasOne(关联模型命名空间,关联模型公共字段,本模型公共字段);
    }
    
    步骤2:模型名::with(推荐表名)->get()
    步骤3:
    foreach($模型名s as $模型名) {
         获取当前模型对应的表数据 $模型名->字段名
         获取当前模型关联表数据   $模型名->with处名称->关联模型字段名;
    }
    

    一对多

    步骤1:定义模型
    public function  推荐表名s () 
    {
    return $this->hasMany(关联模型命名空间,关联模型公共字段,本模型公共字段);
    }
    
    步骤2:模型名::with(推荐表名s)->get()
    步骤3:
    foreach($模型名s as $模型名) {
         获取当前模型对应的表数据 $模型名->字段名
         获取当前模型关联表数据  (脚下留心:多条数据)
    foreach($模型名->with处名称 as $关联表名) {
        $关联表名->关联表字段
    }
    }
    

    Stu表

    <?php
    
    namespace App\Http\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Stu extends Model
    {
        protected $table = 'stu';
    
        public function articles()
        {
            return $this->hasMany('\App\Http\Models\Article','uid','id');
        }
    }
    

    Stundent

    <?php
    
    namespace App\Http\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Student extends Model
    {
        /**
         * 设置表名
         * @var string
         */
        protected $table = 'student';
    
        /**
         * 声明可以批量设置的属性
         * @var array
         */
        protected $fillable   =  ['uname', 'pwd', 'age', 'sex'];
    
        /**
         * Unix时间戳填充数据(注:默认托管创建于更新于)
         * @var string
         */
        protected $dateFormat = 'U';
    }
    

    练习

    #关联模型语法,模型名::with(推荐表名) ->get() 
    
    #练习(一对一关系:一篇文章属于一个用户)
    $articles = Article::with('stu')->get();
    foreach($articles as $article) {
        echo '文章ID:'.$article->aid.',文章标题:'.$article->title.'<br />';
        #说明:with语法获取关联数据
        #语法:$小对象->with处的名->关联模型数据库字段名
        echo '用户ID:'.$article->stu->id.',用户昵称:'.$article->stu->uname.'<hr />';
    }
    
    #练习(一对多关系:一个用户拥有多篇文章)
    $stus = Stu::with('articles')->get();
    foreach($stus as $stu) {
        echo '用户ID:'.$stu->id.',用户昵称:'.$stu->uname.'<br />';
        #说明:with语法获取关联数据
        #语法:$小对象->with处的名称   是一个大对象  里面有多条数据(多个小对象)
        foreach ($stu->articles as $article) {
            echo '文章ID:'.$article->aid.',文章标题:'.$article->title.'<br />';
        }
        echo '<hr />';
    }
    

    路由

    理解RESTful

    RESTful 是目前最流行的一种互联网软件架构(思想)

    RESTful表.png tp5.png

    创建资源控制器路由:Route::resource(URL信息,控制器);

    Route::resource('/order','Admin/OrderController')
    

    创建资源控制器:php artisan make:controller 平台名\控制器名Controller --resource

    php artisan make:controller Admin\OrderController --resource
    

    缓存/配置文件/文件存储-上传

    缓存

    手册: http://laravelacademy.org/post/6858.html

    存储路径:storage\framework\cache

    设置:Cache::put(键,值,缓存时间/分钟)

    获取:Cache::get(键

    //缓存
    public function t5()
    {
        #需求1:缓存用户信息(user1),id=1,uname=itcast,age=18
        Cache::put('user1', [
            'id' => 1,
            'uname' => 'itcast',
            'age' => 18
        ], 3600);
        #需求2:获取用户信息(user1)
        $data = Cache::get('user1');
        print_r($data);
    }
    

    配置文件

    手册: http://laravelacademy.org/post/6677.html

    语法:config(config目录下的配置文件名称.键)

    #需求1:获取app配置文件中时区
    echo config('app.timezone') . '<br />';
    #需求2:获取缓存存放目录
    echo config('cache.stores.file.path');
    

    文件存储-上传

    语法:

    $request->hasFile(上传框name属性值) 
    $request->file(上传框name属性值)->isValid()
    $filename = $request->file(上传框name属性值)->store(子路径,存储驱动器名称);
    ----------------------------------------------
    存储驱动器的名称:对应config/filesystems.php文件的声明
    子路径:指会在config/filesystems.php文件声明的上传文件夹下再创建一个文件
    

    定义any路由

    创建控制器方法

    public function t6(Request $request)
    {
        #1.判断提交方式
        if ($request->isMethod('post')) {
    
            #2.检测是否上传文件和是否成功将本地文件上传到服务器
            if ($request->hasFile('image')  && $request->file('image')->isValid()) {
                #语法:相当于move_upload_file
                #$filename = $request->file(上传框name属性值)->store(子路径,存储驱动器名称);
                
                $filename = $request->file('image')->store(date('Y-m-d', time()), 'uploads');
                echo $filename;
            } else {
                die('上传失败');
            }
            
        } else {
            #2.加载视图
            return view('admin.day4.t6');
        }
    }
    

    修改config\filesystems.php

    在disks数组中新增

    'uploads'=>[
        'driver'=>'local', #存储方式: local本地
        'root'=>public_path('uploads')  #存放位置: public/uploads
    ],
    

    创建表单

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
        <form action="{{ url('day4/t6') }}" enctype="multipart/form-data" method="post">
            <input type="hidden" name="_token" value="{{ csrf_token() }}">
            <input type="file" name="image" /> <br> 
            <input type="submit" value="上传" /> 
        </form> 
    </body>
    </html>
    

    其他

    PHP use 使用场景(or or and 数据操作)
    or or and.png

    相关文章

      网友评论

          本文标题:laravel(四)

          本文链接:https://www.haomeiwen.com/subject/bpuwmftx.html