학습 경로를 변경하고 더 이상 Laravel 4 튜토리얼처럼 로그인 시스템을 먼저 구축하지 않을 것입니다. 이 튜토리얼에서는 Laravel의 라우팅과 PHP의 네임스페이스를 실험하면서 페이지의 관리 기능을 구축해 보겠습니다.
1. 라우팅
다른 PHP 프레임워크와 마찬가지로 Laravel의 라우팅은 다양한 요청을 다양한 컨트롤러에 배포하는 데 사용됩니다.
`learnlaravel5/app/Http/routes.php` 끝에 다음 코드를 추가하세요.
라우팅 그룹이 생성되었음을 나타냅니다.
1. `'prefix' => 'admin'`은 이 라우팅 그룹의 URL 접두사가 /admin임을 의미하며, 이는 `Route::get('/'` 코드의 중간 줄에 해당하는 링크를 의미합니다. 이 코드가 `Route::get('fuck'`인 경우 http://fuck.io:88/이 아니지만 http://fuck.io:88/admin입니다. , URL은 http://fuck.io:88/admin/fuck
이어야 합니다.2. `'namespace' => 'Admin'`은 다음 `AdminHomeController@index`가 `AppHttpControllersAdminHomeController@index`에 없고 `AppHttpControllersAdminAdminHomeController@index`에 하나 더 있음을 의미합니다. 접두사.
Laravel 4를 사용해보신 분들이라면 Laravel 5의 네임스페이스 계획이 이상하다는 것을 느끼실 수 있는데, 이는 실제로 매우 큰 개선입니다. Laravel 4는 실제로 네임스페이스의 강력한 기능을 완전히 도입했습니다. 그러나 "학습 비용을 줄이기 위해" 경로, 컨트롤러 및 모델의 기본 네임스페이스는 모두 최상위 네임스페이스로 설정되어 있어 많은 사람들이 더 쉽게 사용할 수 있습니다. 라라벨을 "시작"했지만, 한동안 사용해 본 후에도 여전히 네임스페이스라는 높은 벽을 넘어야 합니다. 그리고 이전의 "시작하기 쉽다"는 인상을 예감으로 삼아 나중에 배워보겠습니다. 더 어려울 것입니다. Laravel 5는 모든 네임스페이스를 분리합니다. 컨트롤러는 'AppHttpControllers'에 있고, 모델은 'App'에 있습니다. 이를 통해 처음 시작할 때 네임스페이스 분리 느낌을 경험할 수 있으며, 전체적으로 학습 비용이 절감됩니다.
2. 컨트롤러
Artisan을 사용하면 매우 쉽게 컨트롤러를 구축할 수 있습니다.
`learnlaravel5/app/Http/Controllers/Admin/AdminHomeController.php` 파일을 가져옵니다.
`class AdminHomeController 확장 컨트롤러 {` 위에 줄을 추가합니다.
index() 코드를 다음과 같이 수정하세요.
컨트롤러 중국어 문서: http://laravel-china.org/docs/5.0/controllers
컨트롤러에는 네임스페이스 지식이 많이 포함되어 있으므로 PHP 네임스페이스를 참고하여 궁금증을 해결할 수 있습니다.
3. 보기
새로운 `learnlaravel5/resources/views/AdminHome.blade.php`:
@extends('app') @section('content') <div class="container"> <div class="row"> <div class="col-md-10 col-md-offset-1"> <div class="panel panel-default"> <div class="panel-heading">后台首页</div> <div class="panel-body"> <a href="{{ URL('admin/pages/create') }}" class="btn btn-lg btn-primary">新增</a> @foreach ($pages as $page) <hr> <div class="page"> <h4>{{ $page->title }}</h4> <div class="content"> <p> {{ $page->body }} </p> </div> </div> <a href="{{ URL('admin/pages/'.$page->id.'/edit') }}" class="btn btn-success">编辑</a> <form action="{{ URL('admin/pages/'.$page->id) }}" method="POST" style="display: inline;"> <input name="_method" type="hidden" value="DELETE"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <button type="submit" class="btn btn-danger">删除</button> </form> @endforeach </div> </div> </div> </div> </div> @endsection
视图的基本用法在此不再赘述,请阅读中文文档:http://laravel-china.org/docs/5.0/views
访问 http://fuck.io:88/admin 得到如下页面:
至此,包含 路由 》 控制器 》 模型 》 视图 的整个流程都已经完成。
4. 完成 Pages 管理功能
接下来,我将记录下我实现 Pages 管理功能的过程,不再做过多的阐述。大家有问题可以直接在本文下面留言,我会及时回复。
4.1 修改路由 learnlaravel5/app/Http/routes.php
此处增加了一条“资源控制器”,中文文档地址:http://laravel-china.org/docs/5.0/controllers#restful-resource-controllers
4.2 创建 learnlaravel5/app/Http/Controllers/Admin/PagesController.php
运行:
4.3 修改 learnlaravel5/app/Http/Controllers/Admin/PagesController.php 为:
<?php namespace App\Http\Controllers\Admin; use App\Http\Requests; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Page; use Redirect, Input, Auth; class PagesController extends Controller { /** * Show the form for creating a new resource. * * @return Response */ public function create() { return view('admin.pages.create'); } /** * Store a newly created resource in storage. * * @return Response */ public function store(Request $request) { $this->validate($request, [ 'title' => 'required|unique:pages|max:255', 'body' => 'required', ]); $page = new Page; $page->title = Input::get('title'); $page->body = Input::get('body'); $page->user_id = 1;//Auth::user()->id; if ($page->save()) { return Redirect::to('admin'); } else { return Redirect::back()->withInput()->withErrors('保存失败!'); } } /** * Show the form for editing the specified resource. * * @param int $id * @return Response */ public function edit($id) { return view('admin.pages.edit')->withPage(Page::find($id)); } /** * Update the specified resource in storage. * * @param int $id * @return Response */ public function update(Request $request,$id) { $this->validate($request, [ 'title' => 'required|unique:pages,title,'.$id.'|max:255', 'body' => 'required', ]); $page = Page::find($id); $page->title = Input::get('title'); $page->body = Input::get('body'); $page->user_id = 1;//Auth::user()->id; if ($page->save()) { return Redirect::to('admin'); } else { return Redirect::back()->withInput()->withErrors('保存失败!'); } } /** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { $page = Page::find($id); $page->delete(); return Redirect::to('admin'); } }
4.4 创建视图文件
首先在 learnlaravel5/resources/views 下创建 admin/pages 两级文件夹。
然后创建 learnlaravel5/resources/views/admin/pages/create.blade.php:
@extends('app') @section('content') <div class="container"> <div class="row"> <div class="col-md-10 col-md-offset-1"> <div class="panel panel-default"> <div class="panel-heading">新增 Page</div> <div class="panel-body"> @if (count($errors) > 0) <div class="alert alert-danger"> <strong>Whoops!</strong> There were some problems with your input.<br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{ URL('admin/pages') }}" method="POST"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <input type="text" name="title" class="form-control" required="required"> <br> <textarea name="body" rows="10" class="form-control" required="required"></textarea> <br> <button class="btn btn-lg btn-info">新增 Page</button> </form> </div> </div> </div> </div> </div> @endsection
之后创建 learnlaravel5/resources/views/admin/pages/edit.blade.php:
@extends('app') @section('content') <div class="container"> <div class="row"> <div class="col-md-10 col-md-offset-1"> <div class="panel panel-default"> <div class="panel-heading">编辑 Page</div> <div class="panel-body"> @if (count($errors) > 0) <div class="alert alert-danger"> <strong>Whoops!</strong> There were some problems with your input.<br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{ URL('admin/pages/'.$page->id) }}" method="POST"> <input name="_method" type="hidden" value="PUT"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <input type="text" name="title" class="form-control" required="required" value="{{ $page->title }}"> <br> <textarea name="body" rows="10" class="form-control" required="required">{{ $page->body }}</textarea> <br> <button class="btn btn-lg btn-info">编辑 Page</button> </form> </div> </div> </div> </div> </div> @endsection
4.5 查看结果
后台首页 http://fuck.io:88/admin :
新增 Page http://fuck.io:88/admin/pages/create :
编辑 Page http://fuck.io:88/admin/pages/1/edit :
页面上的新增、编辑、删除的功能均已经完成,并且加入了表单验证,Pages 管理功能完成!
以上所述就是本文的全部内容了,希望对大家熟悉Laravel5框架能够有所帮助。