【PHP/Laravel】edit・update・destroyアクションで「編集」「更新」「削除」

Laravelのedit・update・destroyアクションで「編集」「更新」「削除」を作成する方法についてまとめました。

edit・update・destroyアクションで「編集」「更新」「削除」

①TasksController.phpに下記のようにedit・update・destroyアクションを追加します。

TasksController.php

場所:app/Http/Controllers/TasksController.php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Task;
use App\Http\Requests;

class TasksController extends Controller
{

    public function create()
    {
        return view('tasks/create')->with('task', new Task());
    }

    public function store(Request $request)
    {
        $task = new Task();
        $task->fill($request->all());
        $task->save();
        return redirect()->route('tasks.index');
    }

    // editアクション
    public function edit($id)
    {
        $task = Task::find($id);
        return view('tasks/edit')->with('task', $task);
    }

    // updateアクション
    public function update(Request $request, $id)
    {
        $task = Task::find($id);
        $task->fill($request->all());
        $task->save();
        return redirect()->route('tasks.index');
    }

    // destroyアクション
    public function destroy($id)
    {
        $task = Task::find($id);
        $task->delete();
        return redirect()->route('tasks.index');
    }
}

② 「show.blade.php」に編集用のViewを作成します。
場所:resources/views/tasks/show.blade.php

@extends('layouts.app')

@section('title', "$task->nameの編集")

@section('content')

    <div class="panel panel-default">
        <div class="panel-heading">
            {{ $task->name }}の編集
        </div>
        <div class="panel-body">
            {!! Form::model($task, ['route' => ['tasks.update', $task->id], 'method' => 'patch', 'class' => 'form-horizontal']) !!}
                <div class="form-group">
                    {!! Form::label('name', 'タスク名', ['class' => 'col-sm-3 control-label']) !!}
                    <div class="col-sm-6">
                        {!! Form::text('name', $task->name, ['id' => 'task-name', 'class' => 'form-control']) !!}
                    </div>
                </div>
                <div class="form-group">
                    {!! Form::label('done', '完了', ['class' => 'col-sm-3 control-label']) !!}
                    <div class="col-sm-6">
                        {!! Form::select('done', [false => '未', true => '完了'], $task->done, ['id' => 'task-done', 'class' => 'form-control']) !!}
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-offset-3 col-sm-6">
                        {!! Form::button('<i class="fa fa-save"></i> 保存', ['type' => 'submit', 'class' => 'btn btn-default']) !!}
                    </div>
                </div>
            {!! Form::close() !!}
        </div>
        <div class="panel-footer">
            {{ link_to_route('tasks.index', '戻る') }}
        </div>
    </div>

@endsection

実行結果

ブラウザで「http://localhost/example/public/tasks/」にアクセスすると、作成したトップページを確認できます。

関連ページ
1 【PHP入門】基礎文法とサンプルコード集
2 【PHP】Laravelフレームワーク入門
関連記事