laravel阶段总结

原创 2019-01-21 17:05:17 791
摘要:Laravel阶段总结    一.路由    在routes/web.php中写入路由    1.Route::get()来设置get请求的路由参数//访问根目录时,返回welcome视图 Route::get('/', function ()

Laravel阶段总结

    一.路由

    在routes/web.php中写入路由

    1.Route::get()来设置get请求的路由参数

//访问根目录时,返回welcome视图
Route::get('/', function () {    
    return view('welcome');
});
//访问/hello时,返回hello视图
Route::get('/hello', function () {
    return view('hello');
});

    2.Route::post()设置post请求的路由参数

//post请求hello2,返回html代码
Route::post('hello2',function (){
   return '<h1>hello2</h1>';
});

    3.Route::match()匹配第一个参数数组中的请求方式的路由参数

//match 匹配数组中方式
Route::match(['get','post'],'hello3',function (){
    return '<h1>get/post请求返回</h1>';
});

    4.Route::any() 任何请求方式的路由参数

Route::any('hello4',function (){
    return '<h4>任何方法</h4>';
});

    5.Route::view()单请求方式

Route::view('/','welcome');    //访问根目录 返回welcome视图

    6.Route('路径/{参数名}')路由参数  {参数?}为可选参数,需要在后面的闭包中传入默认值.求要写到必选参数后面以防出错

Route::get('new2/{name}/{id?}',function ($name,$id=1){
    return '我的名字'.$name.' id = '.$id;
});

    7.Route::get()->where(array)验证路由参数的规则(正则)

Route::get('new3/{name}/{id?}',function ($name,$id){
    return '我的名字'.$name.' id = '.$id;
})->where(
    ['name'=>'[a-zA-z]+',    //name必须是一个或以上的字母
     'id'=>'[0-9]*'          //id必须是0-9的数字
    ]);

    8.设置控制器访问路由 模块/控制器@方法

Route::get('admin/index/{course?}','admin\Index@index');

--------------------------------------------------------------------------

    二.控制器 在app/Http/controllers里

    1.简单的一个控制器   返回视图admin模块/index控制器/index方法的视图 对应resources/views/admin/index/index.blade.php

public function index($course = 'laravel'){
    return view('admin.index.index',['course'=>$course]);
}

-----------------------------------------------------------------------------

    三.请求对象

    1.构造方法注入请求对象

    就是在构造器中将请求对象以参数的形式传入构造方法中 

    这样只要访问这个控制器,都会触发先触发这个构造方法

use Illuminate\Http\Request;

class Index
{
    protected $request = null;
    //构造方法注入
    public function __construct(Request $request)
    {
        $this->request = $request;
        dump($this->request);
    }

    2.普通方法注入

protected $request = null;
public function demo(Request $demo)
{
    $this->request = $demo;
    dump($this->request);
}
//访问admin 模块的index控制器的demo方法
//Route::get('admin/demo','admin\Index@demo');

    3.依赖注入方法获取请求对象参数   use Illuminate\Http\Request;

    注入到普通方法中后,可以使用这个对象中的很多方法

    也可以通过对象属性的方法来获取参数

    public function reque(Request $request)
    {
        //获取所有普通参数
        dump($request->input());
        //获取指定参数
        dump($request->input('name'));
        //获取不存在的参数
        dump($request->input('salary',6000));
        //仅获取一个参数
        dump($request->only('name'));
        //获取除了指定的其他的普通参数
        dump($request->except('name'));
        //获取路由变量
        dump($request->route('id'));
//        dump($request->route());

        //对象属性方法获取参数
        dump($request->name);
        dump($request->id);
    }

    4.助手函数requset()来获取参数

//助手函数获取url参数
public function delete()
{
    dump(request()->input());
    //获取指定参数
    dump(request()->input('name'));
    //获取不存在的参数
    dump(request()->input('salary',7000));
    //仅获取一个参数
    dump(request()->only('name'));
    //获取除了指定的其他的普通参数
    dump(request()->except('name'));
    //获取路由变量
    dump(request()->route('id'));

    //对象属性方法获取参数
    dump(request()->name);
    dump(request()->id);
}

-------------------------------------------------------------------------------

    四.响应对象

    1.返回字符串

Route::get('admin/test',function (){
    return 'laravel';
})

    2.返回数组,会自动转换为json格式

Route::get('admin/test2',function (){
    return ['name'=>'darwin','age'=>20];
});

    3.返回对象  use Illuminate\Http\Response;  

     setContent()设置内容

    header()设置请求头

    cookie()设置cookie()

use Illuminate\Http\Response;
Route::get('admin/test3',function (Response $response){
    return $response->setContent('塞尔达天下第一');
});
Route::get('admin/test4',function (Response $response){
    return $response->setContent('塞尔达天下第一')
        ->header('content-type','application/json')
        ->cookie('name','塞尔达');
});

    4.助手函数  response('内容')

Route::get('admin/test5',function (){
    return response('塞尔达天下第一!!!')->setContent('真的!!!')
        ->header('content-type','application/json')
        ->cookie('name','塞尔达');
});

    5.视图响应    view()返回对应视图模板

Route::get('admin/test6',function (){
    return response()->view('welcome');
});

    6.转换json格式   json()

Route::get('admin/test7',function (){
    return response()->json(['name'=>'darwin','age'=>20]);
});


批改老师:天蓬老师批改时间:2019-01-21 17:49:43
老师总结:其实一个访问 , 应该从路由开始, 这是非常自然的, 其中闭包路由, 无疑是最简单的, 也是最方便的,可以做非常多的事

发布手记

热门词条