# zy_laravel_web **Repository Path**: liu-chengguo/zy_laravel_web ## Basic Information - **Project Name**: zy_laravel_web - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-24 - **Last Updated**: 2022-01-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 安装步骤 - 复制.env.example为.env - 配置.env里的数据库连接信息 - composer update - php artisan migrate - php artisan db:seed - php artisan key:generate - 登录后台:host/admin 帐号:admin 密码:123456 ## 使用教程 - 创建控制器 ``` bash php artisan make:controller PostController php artisan make:controller TestController -s 创建service 文件 ``` - 创建Model ``` bash php artisan make:model Post php artisan make:model Post -f // 生成 模型工厂 php artisan make:model Post -m // 生成 数据库迁移文件 php artisan make:model Post -s // 生成 数据库填充文件 php artisan make:model Post -e // 生成repository 文件 ``` - 创建自定义request规则 (表单验证) ``` bash php artisan make:request PostRequest ``` - 创建Repository仓库 ``` bash php artisan make:model Post -e php artisan make:repository PostRepository ``` - Repository仓库使用案例 ``` bash 创建: create($data) $repository->create(['name'=>'aaa'] ); 创建多个: createMultiple($data) $repository->createMultiple([['name'=>'aaa'] ,['name'=>'bbb']]); 特殊条件: filter($where) $repository->filter(['title'=>'test']) filter(){ Exmple: where('key' , 'value') Model文件下: scopeKey() } 修改: updateById(1,$data); $repository->updateById(1,['name'=>'test']); $repository->Where(['title'=>'test'])->update(['name'=>'test']); 查询: get() $repository->where('id', 4)->get(); 限制: limit($num) $repository->limit(3)->get(); 分页: paginate($num) $repository->paginate(3); ``` - 创建 Service 逻辑层 ``` bash php artisan make:controller TestController -s php artisan make:service PostService ``` - 使用iseed 导出填充文件 ``` bash php artisan iseed tablename php artisan seed:alltable ``` ## 框架层级 - 路由 请求方式有get、post、put、delete、any 文档参考地址:https://learnku.com/docs/laravel/8.x/routing/9365 ``` bash Route::get('/', 'Front\HomeController@index')->name('home.index'); ``` - 中间件 中间件提供了一种方便的机制来过滤进入应用程序的 HTTP 请求。例如,Laravel 包含一个验证用户身份的中间件。 如果用户未能通过认证,中间件会把用户重定向到登录页面。 反之,用户如果通过验证, 中间件将把请求进一步转发到应用程序中。 文档参考地址:https://learnku.com/docs/laravel/8.x/middleware/9366 例子:只有是成年人才能访问 , 用户年龄小于18 把用户重定向到上一层页面, 用户年龄大于等于18岁将把请求进一步转发到应用程序中 ``` bash php artisan make:middleware CheckAge ``` CheckAge文件 ```bash public function handle($request, Closure $next) { if ($request->age <= 18) { return back(); } return $next($request); } ``` 使用方法:在路由上增加路由参数或在路由上层新建一个路由组并设置中间件 ``` bash Route::middleware(['CheckAge'])->group(function () { Route::get('admin/profile', '') }); Route::get('admin/profile', '')->middleware('CheckAge'); ``` - 控制器 控制器和方法只用于流程控制 创建控制器并生成Service辅助层文件 (框架没有生成service文件的命令,这个命令是自定义的,参考App\Console\Commands目录下MakeService和MakeController文件) 控制器做业务转发和参数获取,模板调用,渲染。 ``` bash php artisan make:controller PostController -s 创建service 文件 php artisan make:service PostService 创建service 文件 ``` 使用方法 ``` bash class PostController extends Controller { public function store(Request $request , PostService $service) { // 在 service 文件下store 方法执行保存程序 return $service->store($request); } } ``` - 表单验证 Laravel 提供了几种不同的方法来验证传入应用程序的数据。 默认情况下,Laravel 的基类控制器使用了一个名为 ValidatesRequests 的 trait,它提供了一种方便的方法以使用各种强大的验证规则来验证传入的 HTTP 请求。 文档参考地址:https://learnku.com/docs/laravel/8.x/validation/9374 快速表单验证 ``` bash public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); } public function store(Request $request) { $messages = ['required' => 'The :attribute field is required.',]; $rules = ['title' => 'required|unique:posts|max:255','body' => 'required',]; $validator = Validator::make($request->all(), $rules, $messages); } ``` 创建表单请求验证 ``` bash php artisan make:request StoreBlogPost ``` 添加一些验证规则到 rules 方法 ``` bash public function rules() { return [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]; } ``` 自定义验证属性: 表单验证失败会提示中文字段错误,例如:新闻标题必填,新闻标题不能重复,新闻标题必须小于255字符 ``` bash public function attributes() { return [ 'title' => '新闻标题', ]; } ``` 自定义错误消息 ``` bash public function messages() { return [ 'title.required' => 'A title is required', 'body.required' => 'A message is required', ]; } ``` 运行方式: 在方法注入 StoreBlogPostRequest 表单验证请求类 ``` bash class PostController extends Controller { public function store(StoreBlogPostRequest $request) { // todo } } ``` 显示验证错误信息 ``` bash @if ($errors->any()) @foreach ($errors->all() as $error)
This is user {{ $user->id }}
@endforeach @forelse ($users as $user)No users
@endforelse @while (true)looping forever.
@endwhile // loop 变量 @foreach ($users as $user) @if ($loop->first) This is the first iteration. @endif @if ($loop->last) This is the last iteration. @endifThis is user {{ $user->id }}
@endforeach // php代码 @php // @endphp // 引入子视图 @include() // 自定义 If 语句 Blade::if('cloud', function ($provider) { return config('filesystems.default') === $provider; }); @cloud('digitalocean') @endcloud ``` - 层级 Model 层最好就是纯粹的 Laravel 的 Eloquent Model,里面不要有业务逻辑。 增加 Repository 层,将 Model 的业务逻辑封装在这里。 增加 Service 层,将 Controller 的业务逻辑封装在这里。 Controller 层只负责数据获取、校验,调用相应 Service 的方法,返回数据。