生活札记
Laravel学习笔记 - 基础入门(一)
Laravel 是一个全栈Web应用程序框架,具有富有表现力、优雅的语法。它可以从面条一样杂乱的代码中解脱出来,它可以构建网络APP,而且每行代码都可以简洁、富于表达力。在Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。
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的基础使用
一)、环境安装
PHP环境:
phpstudy:https://www.xp.cn/
wnmp:https://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即可访问
开发编译器使用的是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
]);
// 不包含html
Route::apiResources([
'blog' => BlogController::class
]);
// 嵌套资源路由,shallow() 浅层嵌套
Route::resource('blog.comments', CommentController::class)->shallow()->names(["index" => "a.b.c"])->parameters([
"blog" => "id",
"comments" => "cid"
]);
// 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
文明上网理性发言!
已完结!!!