さあ、未来へ旅立とう

日々のこと、チーム紹介

  • 4 Oct. 2019

    0から始めるLaravel vol.03 〜ToDoリスト詳細・編集編〜

    CATEGORYBlog TAG

    前回からの続きです。

    0から始めるLaravel vol.02 〜ToDoリスト作成編〜

    今回は詳細と編集ができるようにします。

    まずは詳細を見れるようにするところから。一番下の行を追加します。

    web.php
    
    Route::get('/task/{id}', 'TaskController@show');
    

    コントローラにshowを追加します。

    app/Http/Controllers/TaskController.php
    
    public function show($id)
    {
      $task = Task::findOrFail($id);
      return view('tasks.show', compact('task'));
    }
    

    showを表示するためのビューを作成します。

    view/tasks/show.blade.php
    
    <!DOCTYPE HTML>
    <html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>My Task show</title>
    </head>
    <body>
    
      
    <h1>Tasks</h1>
    
    
    <hr>
    
    
    
    {{ $task->body }}
    
      <span>{{ $task->created_at->format('Y-m-d H:i') }}</span>
    
    </body>
    </html>
    

    indexもshowへ行くためのaタグを追加します。

    view/tasks/index.blade.php
    
    
    <ul>
      @foreach($tasks as $task)
        
    <li>
    
    
    <a href="{{ url('/task/'.$task->id) }}">{{ $task->body }}</a>
    
    
    <form action="{{ 'task/'.$task->id }}" method="POST">
            {{ csrf_field() }}
            {{ method_field('DELETE') }}
            <button type="submit">Delete</button>
          </form>
    
        </li>
    
      @endforeach
    </ul>
    
    


    こんな感じの詳細が出てくれば完璧です。

     

    次は作ったタスクを編集する機能をつけます。

    まずはルートを追加して

    web.php
    
    Route::get('/task/{id}/edit', 'TaskController@edit');
    Route::post('/task/{id}', 'TaskController@update');
    

    コントローラにeditとupdateを追記します。

    app/Http/Controllers/TaskController.php
    
    public function edit($id)
    {
      $task = Task::findOrFail($id);
      return view('tasks.edit', compact('task'));
    }
    public function update(Request $request, $id)
    {
      $task = Task::find($request->id);
      $task->body = $request->body;
      $task->save();
      return redirect('/');
    }
    

    show.blade.phpに編集するためのフォームを記述します。

    
    <form action="{{ url('/task/'.$task->id) }}" method="POST">
      {{ csrf_field() }}
      <input type="text" name="body" value="{{ $task->body }}">
      <button type="submit">update</button>
    </form>
    
    

    詳細ページを見ると

    こんな感じで自分が追加したタスクを編集することができるようになりました。

    これでCRUD
    ・Create(作成)
    ・Read(読み取り)
    ・Update(更新・編集)
    ・Delete(削除)
    を実装することができましたね。

    これを応用することで色々な機能を実装することができます。

    多対多リレーションなどについて書いていきたい。
    けどちょっと自分でも完璧に理解していないので不安ですが頑張ります。

    女性だらけのハーレムを探し、たどり着いたここ湘南!常に調味料を切らし、今日は貴女の部屋へ!毎日コーフンして寝不足気味の強者ジプシー。