L02 Laravel 教程 - Web 开发实战进阶 - 笔记
创建应用
创建 LaraBBS 应用
composer create-project laravel/laravel larabbs --prefer-dist “9.*”
新增站点
hosts文件
127.0.0.1 larabbs.test
.env 文件
DB_DATABASE=larabbs
APP_NAME=LaraBBS
APP_URL=http://larabbs.test
getenv(‘APP_NAME’)获取
env(‘APP_NAME’, ‘Laravel’)
配置信息
访问配置值
config(‘app.timezone’)
调整配置信息(config/app.php)
- 时区
‘timezone’ => ‘Asia/Shanghai’, - 默认语言
‘locale’ => ‘zh-CN’,
辅助函数
自定义辅助函数
- touch app/helpers.php
- composer.json
{..."autoload": {"psr-4": {"App\\": "app/","Database\\Factories\\": "database/factories/","Database\\Seeders\\": "database/seeders/"},"files": ["app/helpers.php"]},... }
- 修改保存后运行以下命令进行重新加载文件即可
composer dump-autoload
首页展示
创建控制器
php artisan make:controller PagesController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PagesController extends Controller
{public function root(){return view('pages.root');} }
绑定路由
Route::get(‘/’, ‘PagesController@root’)->name(‘root’);
laravel-8
取消protected $namespace = ‘App\Http\Controllers’;注释
laravel-9
- 定义此控制器方法的路由
use App\Http\Controllers\PagesController;
Route::get(‘/’, [PagesController::class,‘root’])->name(‘root’); - 使用原始方法
修改App\Providers\RouteServiceProvider
...protected $namespace = 'App\\Http\\Controllers';public function boot(){...Route::middleware('web')->namespace($this->namespace)->group(base_path('routes/web.php'));...}
执行数据迁移来创建数据库表结构
php artisan migrate
laravel-9
- 报错
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter tableusers
add uniqueusers_email_unique
(email
)) - 解决
use Illuminate\Support\Facades\Schema;/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{Schema::defaultStringLength(191);
}
验证
快速验证
public function root(Request $request){try {$validated = $request->validate(['title' => 'required|unique:posts|max:255','body' => 'required',]);}catch (Exception $e){return $e->getMessage();}}
表单请求验证
- 创建
php artisan make:request StorePostRequest - 添加规则
<?phpnamespace App\Http\Requests;use Illuminate\Foundation\Http\FormRequest;class StorePostRequest extends FormRequest
{public function authorize(){return true;}public function rules(){return ['title' => 'required|unique:posts|max:255','body' => 'required',];}public function messages(){return ['title.required' => '标题不能为空','body.required' => '主体不能为空',];}
}
- 使用
public function root(StorePostRequest $request)
{}
- 异常
<?phpnamespace App\Exceptions;use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Validation\ValidationException;
use Throwable;class Handler extends ExceptionHandler
{...public function render($request,Throwable $e){if($e instanceof ValidationException){$result = ["code"=>400,"msg"=>array_values($e->errors())[0][0],];return response()->json($result,400);}return false;}
}
手动创建
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
...public function root(Request $request){$validator = Validator::make($request->all(), ['captcha' => ['required','min:4']], ['captcha.required' => '验证码不能为空','captcha.min' => '验证码不能少于4位']);if ($validator->fails()) {return array_values($validator->errors()->toArray())[0][0];}}
自定义验证规则
- 创建
php artisan make:rule Uppercase - 修改
<?phpnamespace App\Rules;use Illuminate\Contracts\Validation\Rule;class Uppercase implements Rule
{/*** 确定验证规则是否通过。** @param string $attribute* @param mixed $value* @return bool*/public function passes($attribute, $value){return strtoupper($value) === $value;}/*** 获取验证错误消息。** @return string*/public function message(){return ':attribute :attribute 需大写';}
}
- 使用
各处rules中
use App\Rules\Uppercase;
...
'name' => ['required', 'string', new Uppercase],
...
L02 Laravel 教程 - Web 开发实战进阶 - 笔记相关推荐
- Laravel 教程 - Web 开发实战入门 ( Laravel 5.5 )购买链接
Laravel 教程 - Web 开发实战入门 ( Laravel 5.5 )购买链接: 推荐给你高品质的实战课程 https://laravel-china.org/courses?rf=15818 ...
- Python3教程Web开发实战梳理-day7(看着不错)
通过前面几天的的努力,ORM框架.Web框架和配置都已就绪,我们可以开始编写一个最简单的MVC,把它们全部启动起来. MVC:Model-View-Controller,中文名"模型-视图- ...
- 《Flask Web开发实战:入门、进阶与原理解析》读书笔记
写在前面 学docker编排,有一个用Flask框架的Demo,感觉挺方便,所以学习下 基于<Flask Web开发实战:入门.进阶与原理解析>做的读书笔记 个人还是比较喜欢看书,看书的话 ...
- flask web开发是前端还是后端_Flask Web开发实战:入门、进阶与原理解析 PDF 全格式版...
给大家带来的一篇关于Flask相关的电子书资源,介绍了关于Flask.Web.开发实战方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小12.2M,李辉编写,目前豆瓣.亚马逊.当当.京东等 ...
- springboot thymeleaf配置_【程序源代码】Spring Boot 开发笔记web开发实战1
关键字:<Spring Boot 开发笔记>系列文章 各位亲爱的小伙伴:大家好! <Spring Boot 开发笔记>系列文章 这套笔记和源码是我自己在学习springboot ...
- 《Java Web开发实战》Java工程师推荐的进阶之路
<Java Web开发实战>一书更加趋于实战性.此教材由浅入深.循序渐进,在语法阐述时尽量避免术语和公式,使初学者能够快速入门,全面掌握实战技能.它既可以作为高等院校本.专科计算机相关专业 ...
- go+vue——基于gin框架和gorm的web开发实战
go+vue--基于gin框架和gorm的web开发实战 gin框架 视频.资料.笔记 安装Go环境, 添加环境变量(可能自动添加好) 下载 Go 环境变量 goland 报错: GOROOT is ...
- iPhone与iPad开发实战读书笔记
iPhone开发一些读书笔记 手机应用分类 1.教育工具 2.生活工具 3.社交应用 4.定位工具 5.游戏 6.报纸和杂志的阅读器 7.移动办公应用 8.财经工具 9.手机购物应用 10.风景区相关 ...
- 名师讲坛——Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)
[书名]<名师讲坛--Java Web开发实战经典基础篇(JSP.Servlet.Struts.Ajax)> [作者]李兴华.王月清 [ISBN]9787302231585 }:YKf: ...
最新文章
- 国民技术芯片相关产业研发
- php 爬虫_Scrapy 爬虫完整案例-基础篇
- 拼装sql_3分钟短文 | Laravel复杂SQL超多WHERE子句,本地作用域你没用过
- 深度报告:一文看懂生物芯片产业
- 健康饮食动起来[我写绿色IT]
- jenkins 中 Poll SCM 和 Build periodically 的区别
- 概率统计笔记:贝叶斯推断 Bayesian Inference
- boost::lambda::constructor用法的测试程序
- UIButton设置圆角和边框及边框颜色
- javascript学习笔记 null和undefined
- java中的链接之其他窗体_两个窗体之间的链接
- Activate Windows server 2003 in VMware
- 华为云公布2021产品上新计划,让云无处不在,让智能无所不及
- php中fastcgi和php-fpm是什么东西
- [笔记]远传中继的实现
- 06. 区分increment/decrement操作符的前置(prefix)和后置(postfix)形式
- 发现一个记录笔记的方法(康奈尔笔记即5R笔记)
- python 断言方法
- 职业选择与职业规划【转载】
- 睦星科技Kolmostar获1000万美元 A 轮融资,将推出更多元的GNSS定位解决方案
热门文章
- win10系统下,KMSpico安装过程中出现“无法完成操作,因为文件包含病毒或潜在的垃圾软件”
- 树状数组 之 poj 3067
- 功率谱(PS)和功率谱密度(PSD)是否一样、谱估计谱图纵轴数值为什么为负
- LPC1768 IAR环境下使用完整64K内存的方法
- 合并字符串(c++)
- krpano场景拖动时拖动惯性消失的问题
- Android基本界面元素的使用与讲解
- java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法 ? stop() 和 suspend() 方 法为何不推荐使用?
- Win 10 运行软件报‘MSCOMCTL.OCX‘缺失怎么办
- 华为荣耀8青春版计算机在哪里,华为荣耀8青春版比荣耀8青春在哪里?