LoginSignup
ao711
@ao711

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

laravel 更新

Q&AClosed

解決したいこと

Laravelで商品管理システムをつくっています。
更新機能実装をしており、色々なサイトを見ながら進めているのですが、
なかなか上手くいきません。
解決法を教えてください。

発生している問題・エラー

更新ボタンを押すと、419
PAGE EXPIREDとページが表示されません。
出ているエラーメッセージを入力
419
PAGE EXPIRED
NameError (uninitialized constant World)


または、問題・エラーが起きている画像をここにドラッグアンドドロップ

### 該当するソースコード
@extends('app')

@section('title')

@section('content')
    <div class="container">
        <div class="row">
        <div class="row justify-content-center">
        <link href="{{ asset('css/app.css') }}" rel="stylesheet">
        
            <h1>商品情報編集画面</h1>
            <form action="center" method="post"></form>
                @csrf
                <table>
                <tr>
                <div class="form-group">
                    <td><label for="product_name">ID</label></td>
                    <td><input type="text" class="form-inline"id="id" name="id" placeholder="1" ></td>
                </div>
                </tr>
                <tr>
                <div class="form-group">
                    <td><label for="price">商品名*</label></td>
                    <td><input type="text" class="form-inline"id="product_name" name="product_name" placeholder="コーラー" ></td>
                </div>
                </tr>
                <tr>
                <div class="form-group">
                   <td> <label for="stock">メーカー名*</label></td>
                  <td><select input type="text" name="keyword" >
                        <option value="メーカー名">メーカー名</option>
                        <option value="コカ・コーラ">コカ・コーラ</option>
                        <option value="サントリー">サントリー</option>
                        <option value="キリン">キリン</option>
                        <option value="伊右衛門">茶</option>
                      </select></td>
                </div>
                </tr>
                <tr>
                <div class="form-group">
                    <td><label for="comment">価格*</label></td>
                    <td><input type="text" class="form-inline"id="price" name="price" placeholder="¥130" ></td>
                </div>
                </tr>
                <tr>
                <div class="form-group">
                    <td><label for="img_path">在庫数*</label> </td>
                    <td><input type="text" class="form-inline"id="stock" name="stock" placeholder="6"></td> 
                </div>
                </tr>
                <tr>
                    <div class="form-group">
                    <td><label for="comment">コメント</label></td>
                    <td><input type="text" class="form-inline"id="comment" name="comment" placeholder="〇〇~"></td>
                </div>
                </tr>
                <tr>
                    <div class="form-group">
                    <td><label for="img_path">商品画像</label></td>
                    <form action="route('regist')" method="POST" enctype='multipart/form-data'>
	                <td><input type="file" name="image"> </form></td>
                </div>
                </tr>
                <div class="col-sm-offset-2 col-sm-10 text-left">
                <form action="{{ route('update')}}" method="POST">
                                @csrf
                                @method('update')
             
                <td><button type="submit" class="btn btn-success">{{ __('更新') }}</button></td>
                <td><button type="button" onClick="history.back()">戻る</button></td>
                </div>
                </form>
                           
                </table>
            </form>
        </div>
    </div>
@endsection


controller
 ///更新
  public function updateProductes(Request $request, $id){
    DB::beginTransaction();
    try {
    $model = new Productes();
    $model->updateProduct($request, $id);
    DB::commit();
  } catch (\Exception $e) {
      DB::rollback();
      return back();
  }
    return redirect()->route('edit');
 }
model
//更新
    public function updateProductes($request, $id){
        DB::table('productes')
           ->where('products.id', '=', $id)
           ->update([
           'product_name' => $request->input('product_name'),
           'company_name' => $request->input('company_name'),
           'price' => $request->input('price'),
           'stock' => $request->input('stock')
        ]);
     }
web,php
Route::post('/update', [App\Http\Controllers\ProductesController::class, 'update'])->name('update');//更新
### 自分で試したこと
@csrfをbladeファイルに記載しましたがページが開きません。エラーが出てます。
解消方法を教えてください。
0

1Answer

ぱっと見て考えられるのは、<from>タグが入れ子になっていて@csrfが複数ある点です。
それによってCSRF保護が正常に動作していないのかもしれません。

            <form action="center" method="post"></form>
                @csrf
                <table>
                
                <!-- 省略 -->
                
                <form action="{{ route('update')}}" method="POST">
                                @csrf
                                @method('update')
                <td><button type="submit" class="btn btn-success">{{ __('更新') }}</button></td>
                <td><button type="button" onClick="history.back()">戻る</button></td>
                </div>
                </form>
                
                </table>
            </form>
1

Your answer might help someone💌