zoukankan      html  css  js  c++  java
  • laravel学习笔记2--表单

    一、Controller

    1、Request

    1.1、取值:input

    //    1、取值
    echo $request->input('name');
    //    2、取不到值时打印默认值
    echo $request->input('name', '默认值');

    1.2、判断是否有该参数:has

    //    3、判断是否有该参数
    if ($request->has('name')) {
        echo $request->input('name');
    } else {
        echo '不存在该参数';
    }

    1.3、获取所有的参数:all

    //    4、获取所有的参数
    $res = $request->all();

    1.4、判断请求类型

    1.4.1、method

    echo $request->method();

    1.4.2、isMethod

    if ($request->isMethod('GET')) {
        echo 'YES';
    } else {
        echo 'NO';
    }

    1.4.3、ajax

    $res = $request->ajax();

    1.4.4、is:判断请求路径是否符合要求

    $res = $request->is('student/*');

    1.4.5、url:获取请求的url

    $res = $request->url();

    2、Session

    2.1、Session的配置文件:

    2.2、添加web中间件,开启session_start:

    在路由中添加中间件:

    Route::group(['middleware' => ['web']], function(){
        Route::get('session1', ['uses' => 'StudentController@session1']);
        Route::get('session2', ['uses' => 'StudentController@session2']);
    });

    2.3、设置及获取session:

    1)通过request对象:

        public function session1(Request $request)
        {
            $request->session()->put('key1', 'value1');
        }
    
        public function session2(Request $request)
        {
            echo $request->session()->get('key1');
        }

    2)通过session()方法:

        public function session1(Request $request)
        {
            session()->put('key2', 'value2');
        }
    
        public function session2(Request $request)
        {
            echo session()->get('key2');
        }

    3)通过Session类:

        public function session1(Request $request)
        {
            Session::put('key3', 'value3');
        }
    
        public function session2(Request $request)
        {
            echo Session::get('key3', 'default'); // 没有key3取值为default
        }

    4)session中存入数组:push

        public function session1(Request $request)
        {
            Session::push('student', 'sean');
            Session::push('student', 'lily');
        }
    
        public function session2(Request $request)
        {
            $student = Session::get('student');
        }

    5)取出session中的数据后删除该session数据:pull

        public function session2(Request $request)
        {
            $student = Session::pull('student', 'default');
            var_dump($student);
        }

    6)取出session中所有的数据:all

    $res = Session::all();

    7)判读session有没有某个值:has

    $bool = Session::has('key1');

    8)删除某个session值:forget

    Session::forget('key1');

    9)清空所有的session值:flush

    Session::flush();

    10)暂存session数据,只有第一次访问时有数据,第二次访问就没有该session值了:flash

        public function session1(Request $request)
        {
            Session::flash('key-flash', 'value-flash');
        }
    
        public function session2(Request $request)
        {
            echo Session::get('key-flash');
        }

    3、Respose

    3.1、响应json:response()->json($data)

        public function response()
        {
            $data = [
                'errCode' => 0,
                'errMsg' => 'success',
                'data' => 'sean'
            ];
            return response()->json($data);
        }

    3.2、重定向:

    3.2.1、redirect()

        public function response()
        {
            return redirect('session1');
        }

    备注:重定向可以带信息,使用with,重定向后的方法使用session获取

        public function session1(Request $request)
        {
            return Session::get('message', 'not message');
        }
    
        public function response()
        {
            return redirect('session1')->with('message', 'hello world');
        }

    3.2.2、使用action方法跳转到对应的方法中

        public function response()
        {
            return redirect()->action('StudentController@session1')->with('message', 'hello world');
        }

    3.2.3、通过路由别名跳转:route

        public function response()
        {
            return redirect()->route('sess1')->with('message', 'hello world');
        }

    3.2.4、返回上一个页面:back

        public function response()
        {
            return redirect()->back();
        }

    4、中间件:Middleware

    4.1、定义

    Laravel中间件提供一个方便的机制来过滤进入应用程序性的HTTP请求

    4.2、准备两个方法:

    4.3、创建中间件:

    <?php
    namespace AppHttpMiddleware;
    
    use Closure;
    
    class Activity
    {
        public function handle($request, Closure $next)
        {
            if (time() < strtotime('2018-10-27')) {
                return redirect('activity0');
            }
            return $next($request);
        }
    }

    4.4、注册中间件:

    'activity' => AppHttpMiddlewareActivity::class,

    4.5、在路由中使用中间件:

    Route::group(['middleware' => ['activity']], function(){
        Route::get('activity1', ['as' => 'activity1', 'uses' => 'StudentController@activity1']);
    });

     二、静态资源管理及模板布局

    1、asset:引入js、css文件,默认以public为根目录,如下为引入public目录下的css和js文件:

    <link rel="stylesheet" href="{{ asset('css/bootstrap.css') }}">
    <script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script>

    2、分页

    控制器使用paginate()获取数据:

    $students = Student::paginate(2);

    页面模板使用renderrender()方法输出分页:

    {{$students->render()}}

    最终页面显示,这里没有添加样式:

    3、数据验证

    3.1、控制器上对数据进行验证

    3.1.1、路由上必须使用web中间件:

    Route::group(['middleware' => ['web']], function(){
        Route::any('student/create', ['uses' => 'StudentController@create']);
    });

    3.1.2、控制器是使用validate方法进行验证:

    $this->validate($request, [
            'student.name' => 'required|min:2|max:20',
            'student.age' => 'required|integer'
        ], [
            'required' => ':attribute 为必填项',
            'min' => ':attribute 长度不符合要求',
            'integer' => ':attribute 必须为整数'
        ], [
            'student.name' => '姓名',
            'student.age' => '年龄'
    ]);

    3.1.3、因为控制层使用了create方法,所以model层需要指定允许批量赋值的字段:

    3.1.4、view层需要添加csrf_field()及显示错误信息:

    common.error.blade.php代码,错误信息存储在$errors中:

    @if (count($errors))
        @foreach ($errors->all() as $error)
        <ul>
            <li>{{$error}}</li>
        </ul>
        @endforeach
    @endif

     3.1.5、页面显示:

     3.1.6、失败跳转时存储已经填写的信息:withInput()、old()

  • 相关阅读:
    第一课:人人站安装与使用教程
    linux 多个python版本的切换
    参考文章
    windows下scrapy 的安装
    vi 使用入门
    linux 源码安装
    C语言—第二次作业
    C语言第0次作业
    c语言博客园作业03函数
    tomcat对于web.xml的securityconstraint使用的处理机制
  • 原文地址:https://www.cnblogs.com/zhengchuzhou/p/9865506.html
Copyright © 2011-2022 走看看