ao711
@ao711

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

laravel 新規登録

解決したいこと

新規登録ボタンを実装したい

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

下の写真のような感じにしたいです。新規登録を押すと新規登録画面へ推移させたいです。
image.png

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

ボタンを押しても機能しない

該当するソースコード
@extends('app')
@section('title', '商品一覧画面')

@section('content')



商品一覧画面



@csrf
            <div class="form-group">
            <form action="{{ route('search') }}" method="GET">
                            @csrf
                            @method('search')
                            <input placeholder="検索キーワード" input type="text" name="keyword">
            
            <select input type="text" name="keyword" >
                    <option value="メーカー名">メーカー名</option>
                    <option value="コカ・コーラ">コカ・コーラ</option>
                    <option value="サントリー">サントリー</option>
                    <option value="キリン">キリン</option>
            </select>
            <input type="submit" value="検索">
            </form>
            <link href="{{ asset('css/app.css') }}" rel="stylesheet">

        <table>
            <thead>
                <tr>
                    <th>ID</th>
                    <th>商品画像</th>
                    <th>商品名</th>
                    <th>価格</th>
                    <th>在庫数</th>
                    <th>メーカー名</th>
                    <th><button type="submit" class="btn btn-primary btn-block">新規登録</button></th>
                    <form action="{{ route('regist') }}" method="POST">
                            @csrf
                            @method('regist')
                            <input type="submit" class="btn btn-primary value="新規登録">
                    </form>
            
            </thead>
            <tbody>
            @foreach ($productes as $productes)

                <tr>    
                    <td>{{ $productes ->id }}</td>
                    <td>{{ $productes -> img_path}}</td>
                    <td>{{ $productes ->product_name }}</td>
                    <td>{{ $productes ->price }}</td>
                    <td>{{ $productes -> stock}}</td>
                    <td>{{ $productes ->company_name}}</td>
                    <td><a href="{{route('detail',['id'=>$productes->id])}}"><button type="button" class="btn btn-primary">詳細</button></a></td>
                    <td><a href="{{ route('delete',['id'=>$productes->id]) }}" method="GET"></td>
                    <td>
                        <form action="{{route('delete',['id'=>$productes->id])}}" method="GET">
                            @csrf
                            @method('delete')
                            <input type="submit" class="btn btn-danger delete-btn" value="削除">
                        </form>
                    </td>
                    
                    
                </tr>
            @endforeach
            </tbody>
        </table>
        </form>
    </div>
</div>

@endsection

product.controller
/新規登録
public function insertProduct(Request $request){
DB::beginTransaction();
try {
$model = new Productes();
$model->insertProduct($request);
DB::commit();
} catch (\Exception $e) {
DB::rollback();
return back();
}
return redirect()->route('regist');
}
model
/新規登録
public function insertProduct($request){
DB::table('productes')
->insert([
'product_name' => $request->input('product_name'),
'company_name' => $request->input('company_name'),
'price' => $request->input('price'),
'stock' => $request->input('stock'),
]);
}
web.php
Route::post('/regist', [App\Http\Controllers\ProductesController::class, 'regist'])->name('regist');//新規登録

自分で試したこと

色々試してみましたが、なぜ機能しないのか原因がわかりません。
詳しい方がおられましたら教えていただきたいです。
宜しくお願い致します

0

3Answer

新規登録ボタンが2つあるのが気になりますね。
押している(表示されている)のはどちらでしょうか?

<th><button type="submit" class="btn btn-primary btn-block">新規登録</button></th>
<form action="{{ route('regist') }}" method="POST">
    @csrf
    @method('regist')
    <input type="submit" class="btn btn-primary value="新規登録">
</form>
0Like

新規ボタン二つ目書いてある新規登録ボタンの記載は消しましたが、

ボタン機能しません。。詳しい方教えてください。

0Like

Comments

  1. <th><button type="submit" class="btn btn-primary btn-block">新規登録</button></th>
    

    submitボタンはフォームのデータをサーバーへ送信するためのボタンです。
    しかし1つ目のボタンは<form>タグの中に無いので動作しないと思います。

    例えば<form>タグを追加する対応が必要です。

    <th>
        <form action="{{ route('regist') }}" method="POST">
            @csrf
            <button type="submit" class="btn btn-primary btn-block">新規登録</button>
        </form>
    </th>
    

コメント誠にありがとうございます。ご指摘のように

タグの中におさめ、2種類コード記載して試してみましたがエラーが解消されません。
解決策があれば教えていただきたいです。。      新規登録 や 新規登録 と記載してもThe REGIST method is not supported for route regist. Supported methods: GET, HEAD, POST.のエラーが消えないです。
0Like

Comments

  1. こちらでも回答しましたが、HTTPリクエストメソッドは決められたものがあります。
    @methodへの指定もそうですが、ルート設定にも問題があるかもしれません。

Your answer might help someone💌