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()

原文地址:https://www.cnblogs.com/zhengchuzhou/p/9865506.html