Laravel 5 기초(11)-하위 보기 와 폼 재 활용

5257 단어 laravel
우 리 는 문장 을 편집 하 는 문 제 를 처리 해 야 한다.물론 우 리 는 새로운 길 을 손 으로 추가 할 수 있 습 니 다.이렇게:
Route::get('/articles/{id}/edit', 'ArticleController@edit');

명령 행 아래artisanroute:list를 사용 하여 현재 의 경 로 를 봅 시다.
php artisan route:list

RESTful 에 부합 되 는 상황 에서 laravel 을 직접 사용 할 수 있 는resource루트 는 좋 은 선택 입 니 다.그러나 우 리 는 모든 루트 를 제거 하고 유일한 루트 만 추가 합 니 다.
Route::resource('articles', 'ArticlesController');

다시php artisan route:list를 사용 하여 길 을 살 펴 보 세 요.와,우리 가 기대 하 는 길 들 이 생 겼 습 니 다.하나하나 자세히 살 펴 보 세 요.
현재 컨트롤 러 에 방법 추가:

    public function edit($id) {
        $article = Article::findOrFail($id);

        return view('articles.edit', compact('article'));
    }

보기 만 들 기
@extends('layout')

@section('content')
    <h1>Edit: {!! $article->title !!} </h1>

    <hr/>

    ...

좋 습 니 다.저 는 이 코드 들 이 모두create.blade.php에서 복사 되 었 다 는 것 을 인정 합 니 다.수정 을 했 습 니 다.문 제 는 우리 가 중복 해 야 하 는 것 입 니까?나중에 우 리 는 이 문 제 를 처리 할 것 이 니,지금 표 의 제출 문 제 를 살 펴 보 자.경로 에서php artisan route:list다시 한 번 보고PATCH방법 을 사 용 했 습 니 다.보 기 를 수정 하 겠 습 니 다.
{!! Form::open(['method' => 'PATCH', 'url' => 'articles/' . $article->id]) !!} 

브 라 우 저 에 접근/articles/1/edit하여 소스 코드 를 살 펴 보 니 laravel 이 자동 으로_method=PATCH숨겨 진 필드 를 생 성 한 것 을 발견 하 였 습 니 다.
문 제 는 글 을 편집 하지만 글 의 정보 가 표시 되 지 않 았 습 니 다.보 기 를 수정 하 겠 습 니 다.
 {!! Form::model($article, ['method' => 'PATCH', 'url' => 'articles/' . $article->id]) !!}

OK,everything's ok,published_on필드 를 제외 하고 현재 날짜 로 설정 하고 나중에 처리 합 니 다.
현재 컨트롤 러 에 방법 추가:
    public function update($id, \Illuminate\Http\Request $request) {
        $article = Article::findOrFail($id);
        $article->update($request->all());

        return redirect('articles');
    }

우 리 는 수정 하 는 과정 에서 도 우리 의 Request 류 를 재 활용 하여CreateArticleRequest더 통용 되 는ArticleRequest방법 중의 인 자 를 수정 하 는 것 을 잊 지 않도록 검증 해 야 한다.
    public function update($id, Requests\ArticleRequest $request) {
        $article = Article::findOrFail($id);
        $article->update($request->all());

        return redirect('articles');
    }

현재 남 은 문 제 는 우리 의 새 코드 와 편집 이 대부분 같은 코드 를 사 용 했 습 니 다.예 를 들 어 오 류 를 표시 하지만 그들 은 두 부 를 가지 고 있 습 니 다.우 리 는 이 문 제 를 수정 합 니 다.
우 리 는 직접store아래 에 새 파일views/articles을 만 들 고 오류 처리 코드 를list.blade.php에서 복사 합 니 다.
@if ($errors->any())
    <ul class="alert alert-danger">
        @foreach($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeach
    </ul>
@endif
create.blade.php아래 문장 으로 오류 처리 코드 를 교체 하면 됩 니 다.
@include('articles.list')

폼 코드 를 다시 처리 합 시다.폼 코드 는create.blade.php과 다 르 지 않 고 제출 버튼 과 차이 가 있 으 며 다른 것 은 많 지 않 습 니 다.코드 를 복사 하 는 보기form를 만 듭 니 다.
<div class="form-group">
    {!! Form::label('title', 'Title:') !!}
    {!! Form::text('title', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::label('body', 'Body:') !!}
    {!! Form::textarea('body', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::label('published_at', 'Publish On:') !!}
    {!! Form::input('date', 'published_at', date('Y-m-d'), ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {{--       ,            ,         partial --}}
    {!! Form::submit($submitButtonText, ['class' => 'btn btn-primary form-control']) !!}
</div>

수정articles/form_partial.blade.php
@extends('layout')

@section('content')
    <h1>Write a New Article</h1>

    <hr/>

    @include('articles.list')

    {{--        illuminate\html    --}}
    {!! Form::open(['url' => 'articles']) !!}
        @include('articles.form_partial', ['submitButtonText' => 'Add Article'])
    {!! Form::close() !!}

@stop

수정create.blade.php
@extends('layout')

@section('content')
    <h1>Edit: {!! $article->title !!} </h1>

    <hr/>

    @include('articles.list')
    {{--        illuminate\html    --}}
    {!! Form::model($article, ['method' => 'PATCH', 'url' => 'articles/' . $article->id]) !!}
    @include('articles.form_partial', ['submitButtonText' => 'Update Article'])

    {!! Form::close() !!}

@stop

좋은 웹페이지 즐겨찾기