Laravel 5 프레임 워 크 입문(2)페이지 관리 기능 구축

우 리 는 Laravel 4 튜 토리 얼 처럼 로그 인 시스템 을 먼저 구축 하지 않 고 학습 노선 을 바 꿀 것 이다.이 튜 토리 얼 에 서 는 Pages 의 관리 기능 을 함께 구축 하여 Laravel 의 경로 와 PHP 의 네 임 스페이스 를 시도 할 것 입 니 다.
1.경로
Laravel 의 길 은 다른 PHP 프레임 워 크 와 마찬가지 로 각종 요청 을 컨트롤 러 로 나 누 는 역할 을 합 니 다.
'learnlaravel 5/app/Http/routes.php'의 끝 에 다음 코드 를 추가 합 니 다.

Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function()
{
  Route::get('/', 'AdminHomeController@index');
});
이것 은 루트 그룹 을 만 들 었 다 는 것 을 나타 낸다.
1.'prefix'='admin'은 이 경로 그룹의 url 접 두 사 를/admin 이 라 고 표시 합 니 다.즉,중간 에 있 는 코드 인'Route:get('/'에 대응 하 는 링크 는http://fuck.io:88/이 아니 라http://fuck.io:88/admin입 니 다.이 코드 가'Route:get('fuck'이 라면 URL 은http://fuck.io:88/admin/fuck이 어야 합 니 다.
2.'namespace'=>'admin'은 아래 의`AdminHomeController@index'아니'\App\Http\Controllers\\AdminHomeController@index`가 아니 라`\앱\Http\Controllers\Admin\\AdminHomeController@index`,네 임 스페이스 의 접 두 사 를 붙 였 다.
Laravel 4 를 사용 해 봤 다 면 Laravel 5 의 네 임 스페이스 계획 이 이상 하 다 는 것 을 알 게 될 것 이다.이것 은 사실 매우 큰 발전 이다.Laravel 4 는 네 임 스페이스 라 는 강력 한 특성 을 전면적으로 도입 했다.그러나'학습 원 가 를 낮 추기 위해 경로,컨트롤 러,모델 의 기본 네 임 스페이스 를 모두 최고급 네 임 스페이스 로 설정 했다.이 행동 은 오히려 많은 사람들 로 하여 금 Laravel 을 쉽게'시작'하 게 만 들 었 다.그러나 시간 이 걸 린 후에 높 은 벽 을 넘 어야 한다.그것 이 바로 네 임 스페이스 이 고 앞 에 있 는'손 에 넣 기 쉽다'는 인상 이 깔 려 있어 후기의 학습 이 더욱 어 려 울 것 이다.Laravel 5 는 네 임 스페이스 를 모두 분리 하고 컨트롤 러 는'\App\Http\Controllers'에 있 습 니 다.모델 은'\App'에 있 습 니 다.우 리 는 처음에 네 임 스페이스 가 분 리 된 느낌 을 체험 하 게 합 니 다.전체적으로 학습 원 가 를 낮 출 수 있 습 니 다.
2.컨트롤 러
우 리 는 Artisan 을 사용 하여 컨트롤 러 를 매우 편리 하 게 구축 할 수 있다.

php artisan make:controller Admin/AdminHomeController
'learnlaravel 5/app/Http/controllers/admin/admin HomeController.php'파일 을 가 져 옵 니 다.
'class Admin HomeController extends Controller{'에 한 줄 추가:

use App\Page;
index()의 코드 를 다음 과 같이 수정 합 니 다.

public function index()
{
  return view('AdminHome')->withPages(Page::all());
}
컨트롤 러 중국어 문서:http://laravel-china.org/docs/5.0/controllers
컨트롤 러 에는 많은 네 임 스페이스 지식 이 포함 되 어 있 으 며,PHP 네 임 스페이스 의 해 혹 을 참고 할 수 있 습 니 다.
3.보기
새`learnlaravel 5/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.페이지 관리 기능 완료
그 다음 에 저 는 페이지 관리 기능 을 실현 하 는 과정 을 기록 하고 더 이상 논술 하지 않 겠 습 니 다.여러분 에 게 문제 가 있 으 면 본문 아래 에 직접 메 시 지 를 남 겨 도 됩 니 다.저 는 제때에 대답 하 겠 습 니 다.
4.1 수정 경로 learnlaravel 5/app/Http/routes.php

Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function()
{
  Route::get('/', 'AdminHomeController@index');
  Route::resource('pages', 'PagesController');
});
여기에'자원 컨트롤 러'가 추가 되 었 습 니 다.중국어 문서 주소:http://laravel-china.org/docs/5.0/controllers#restful-resource-controllers
4.2 learnlaravel 5/app/Http/controllers/admin/pagesController.php 만 들 기
실행:

php artisan make:controller Admin/PagesController
4.3 learnlaravel 5/app/Http/controllers/admin/pages Controller.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 보기 파일 만 들 기
우선 learnlaravel 5/resources/views 에서 admin/pages 2 급 폴 더 를 만 듭 니 다.
그리고 learnlaravel 5/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

이후 learnlaravel 5/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:

신규 페이지http://fuck.io:88/admin/pages/create:

편집 페이지http://fuck.io:88/admin/pages/1/edit:

페이지 의 추가,편집,삭제 기능 이 모두 완료 되 었 고 폼 검증 이 추가 되 었 습 니 다.페이지 관리 기능 이 완료 되 었 습 니 다!
이상 에서 말 한 것 이 바로 본 고의 모든 내용 입 니 다.Laravel 5 프레임 워 크 를 숙지 하 는 데 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기