LoginSignup
1
0

Laravel で MariaDB の CRUD (その 5 Update)

Last updated at Posted at 2018-06-14

こちらのページの続きです。

Laravel で MariaDB の CRUD (その 4)
データ更新機能を作ります。

  1. ルーティングを確認
  2. articles.update があることを確認

    php artisan route:list
    
  3. 一覧ページに編集のリンクをつけます。
  4. resources/views/articles/index.blade.php
    {{-- layoutsフォルダのapplication.blade.phpを継承 --}}
    @extends('layouts.application')
    
    {{-- @yield('title')にテンプレートごとにtitleタグの値を代入 --}}
    @section('title', '記事一覧')
    
    {{-- application.blade.phpの@yield('content')に以下のレイアウトを代入 --}}
    @section('content')
    <div>
        <a href="/articles/create">新規作成</a>
    </div>
    <table>
     @foreach ($articles as $article)
    	<tr>
        <td>{{$article->title}}</td>
        <td>{{$article->body}}</td>
    	<td><a href="/articles/{{$article->id}}">詳細を表示</a></td>
    	<td><a href="/articles/{{$article->id}}/edit">編集する</a></td>
    	</tr>
      @endforeach
    </table>
    @endsection
    
  5. 詳細のページに編集のリンクをつけます。
  6. resources/views/articles/show.blade.php
    {{-- layoutsフォルダのapplication.blade.phpを継承 --}}
    @extends('layouts.application')
    
    {{-- @yield('title')にテンプレートごとの値を代入 --}}
    @section('title', '記事詳細')
    
    {{-- application.blade.phpの@yield('content')に以下のレイアウトを代入 --}}
    @section('content')
      <h1>{{$article->title}}</h1>
      <p>{{$article->body}}</p>
      <br><br>
      <a href="/articles/{{$article->id}}/edit">編集する</a>
      <a href="/articles">一覧に戻る</a>
    @endsection
    
  7. editアクションを編集
  8. app/Http/Controllers/ArticlesController.php
    // 略
        public function edit($id)
        {
            $article = Article::find($id);
            return view('articles.edit', ['article' => $article]);
        }
    // 略
    
  9. ビューの作成
  10. resources/views/articles/edit.blade.php
    {{-- layoutsフォルダのapplication.blade.phpを継承 --}}
    @extends('layouts.application')
    
    {{-- @yield('title')にテンプレートごとの値を代入 --}}
    @section('title', '編集')
    
    {{-- application.blade.phpの@yield('content')に以下のレイアウトを代入 --}}
    @section('content')
      <form action="/articles/{{$article->id}}" method="post">
        {{ csrf_field() }}
        <div>
          <label for="title">タイトル</label>
          <input type="text" name="title" placeholder="記事のタイトルを入れる" value="{{$article->title}}">
        </div>
        <div>
          <label for="body">内容</label>
          <textarea name="body" rows="8" cols="80" placeholder="記事の内容を入れる">{{$article->body}}</textarea>
        </div>
        <div>
          <input type="hidden" name="_method" value="patch">
          <input type="submit" value="更新">
        </div>
      </form>
    @endsection
    
  11. updateアクションを編集
  12. app/Http/Controllers/ArticlesController.php
    // 略
        public function update(Request $request, $id)
        {
      // idを元にレコードを検索して$articleに代入
      $article = Article::find($id);
      // editで編集されたデータを$articleにそれぞれ代入する
      $article->title = $request->title;
      $article->body = $request->body;
      // 保存
      $article->save();
      // 詳細ページへリダイレクト
      return redirect("/articles/".$id);
        }
    // 略
    
  13. サーバーを起動してブラウザーで確認
  14. php artisan serve
    

    http://localhost:8000/articles
    laravel_jun1408.png
    編集するをクリック
    laravel_jun1409.png
    更新をクリック
    laravel_jun1410.png
    一覧に戻るをクリック
    laravel_jun1411.png

次のページ

Laravel で MariaDB の CRUD (その 6 Delete)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0