Laravel 5 프레임 워 크 입문(2)페이지 관리 기능 구축
13168 단어 laravel 5 프레임 워 크페이지 관리
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-controllers4.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 프레임 워 크 를 숙지 하 는 데 도움 이 되 기 를 바 랍 니 다.