生活札记

Laravel学习笔记 - 基础入门(一)

copylian    1 评论    9377 浏览    2023.05.05

微信图片_20230505213620.png

Laravel 是一个全栈Web应用程序框架,具有富有表现力、优雅的语法。它可以从面条一样杂乱的代码中解脱出来,它可以构建网络APP,而且每行代码都可以简洁、富于表达力。在Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。

中文官网:http://laravel.p2hp.com/

Laravel 文档:https://learnku.com/docs/laravel/10.x/releasesmd/14832

Laravel 速查表:https://learnku.com/docs/laravel-cheatsheet/10.x

Laravel 教程:https://www.bilibili.com/video/BV1gE411j78F

参考:Laravel框架基础入门,Composer的基础使用

参考:Laravel框架重要知识整理


一)、环境安装

PHP环境:

        phpstudyhttps://www.xp.cn/

        wnmphttps://wnmp.x64architecture.com/downloads/

composer:

        下载https://getcomposer.org/download/

        配置阿里镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

创建Laravel项目:composer create-project --prefer-dist laravel/laravel laravel

启动Laravel项目:php artisan serve 或 php artisan serve --host=www.test.com,通过127.0.0.1:8000即可访问

微信图片_20230505215313.png

开发编译器使用的是vscode,所以需要下载对应的Laravel插件。

        

二)、路由:routes/web.php

// 全局参数配置,也可以在 app\Providers\RouteServiceProvider 的 boot()方法配置

Route::pattern('id', '[0-9]+');


// 1、基础路由

// 访问:http://localhost:8000/user/123/copylian

Route::get('user/{id}/{name?}', [UserController::class, 'index'])->where(['id' => '[0-9]+', "name" => "[a-z]+"])->name("user.index");

Route::get('/user', "UserController@index"); // Laravel7以上不生效

Route::get('/user', "App\Http\Controllers\UserController@index");

Route::get('/user', [\App\Http\Controllers\UserController::class, 'index']);


// 闭包函数

Route::get("user/{id}", function($id){

    return "User Index " . $id;

});


// post方式

Route::post('/useredit', [UserController::class, 'edit']);


// match匹配

Route::match(["get","post"], "user", [UserController::class, 'index']);


// 任意

Route::any("user", [UserController::class, 'index']);


// 2、重定向

// 重定向跳转,默认302

Route::redirect("index", "info", 301);


// 直接重定向

Route::permanentRedirect("index", "info");


// 3、视图路由

Route::view("info", "info", ["title" => "用户信息"]); // resources/views 下的模板变量 {{$title}}

Route::get("info", function(){

        return view("info", ["title" => "用户信息"]);

});


// 4、路由命名与分组

// 参数可以配置中间件:

// ['middleware'=>'中间名'] 或 Route::middleware("auth")

// 前缀:['prefix'=>'api']  或 Route::prefix("api")

// domain:['domain'=>'127.0.0.1'] 或 Route::domain("127.0.0.1")

// namespace:['namespace'=>'Admin'] 或 Route::namespace("Admin")

// as命名:['as'=>'user.']

// 访问:http://localhost:8000/user/list

Route::group(["prefix" => "user", "as" => "user."], function(){

        // list 路由

        Route::get('list', [UserController::class, 'list'])->name("list"); // name = user.list

});


// 命名空间

Route::namespace("Admin")->group(function(){

        Route::get("admin", [AdminController::class, 'index']);

});


// 5、路由回退、路由信息、单控制器

// 路由回退:报错时处理路由,如404

Route::fallback(function(){

        // 重定向

        return redirect("/");

        

        // 404页面

        return view("404");

});


// 单控制器:单行为控制器使用__invoke()方法,可以使用命令行创建;

// php artisan make:controller OneController --invokable

Route::get("one", [OneController::class, "__invoke"]);


// 路由信息

Route::get("routeinfo", [UserController::class, 'routeinfo'])->name("route.info");

//当前路由信息

dump(Route::current());

//返回当前路由的名称

dump(Route::currentRouteName());

//返回当前路由指向的方法

return Route::currentRouteAction();


// 6、响应设置(response)和重定向

Route::get("response", [UserController::class, "response"]);

// 响应json

return [1,2,3];

return response([1,2,3]);

return response()->json([1,2,3]);

return response("idnex", 201)->header('Content-Type', 'text/plain');

return response()->view("404")->header('Content-Type', 'text/plain');


// 重定向

return redirect('routeinfo');

return redirect()->route("route.info");

return redirect()->back();

return back();

return redirect()->away("https://www.copylian.com/");

return redirect()->action([\App\Http\Controllers\Admin\AdminController::class,"index"]);


// 7、资源路由

// 包含html:php artisan make:controller BlogController --resource

// 不包含html:php artisan make:controller CommentController --api

Route::resource("blog", BlogController::class)->only(['index', 'show'])->except(['index', 'show']);

Route::resources([

        'blog' => BlogController::class

]);

微信图片_20230506005534.png


// 不包含html

Route::apiResources([

        'blog' => BlogController::class

]);


// 嵌套资源路由,shallow() 浅层嵌套

Route::resource('blog.comments', CommentController::class)->shallow()->names(["index" => "a.b.c"])->parameters([

        "blog" => "id",

        "comments" => "cid"

]);

微信图片_20230506005556.png


// 8、表单伪造和 CSRF 保护,可以在VerifyCsrfToken.php中间件排除特定的不需要CSRF验证:protected $except = [ 'api/*'];

<form action="/user/getform" method="post">

    用户名:<input type="text" name="user">

    <input type="hidden" name="_token" value="{{csrf_token()}}">

    <input type="hidden" name="_method" value="PUT">

    @csrf

    @method('put')

    <button type="submit">提交</button>

</form>


由于时间有限其他知识点请参考:https://www.aliyundrive.com/s/NU5X8FvdRhK

只袄早~~~
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!
PHP Laravel PHP框架 

文明上网理性发言!