動的フォームをデータベースに保存する方法を知りたいです
Laravel7を使用しています
認証用にあるRegisterControllerにバリデーションなどを書いています
HTML
1<form method="POST" action="{{route('receive')}}"> 2@csrf 3 4<-- Java Scriptなどでtextフィールドが動的に増減 --> 5<input type="text" class="form-control @error('text[]') is-invalid @enderror"value="{{ old('text[]' }}" name="text[]"> 6@error('text[]') 7 <span class="invalid-feedback" role="alert"> 8 <strong>{{ $message }}</strong> 9 </span> 10@enderror 11<input type="submit" value="送信"> 12</form> 13 14
PHP
1namespace App\Http\Controllers\Auth; 2 3use App\Http\Controllers\Controller; 4use App\Providers\RouteServiceProvider; 5 6//使用するテーブル// 7use App\Text; 8 9use Illuminate\Foundation\Auth\RegistersUsers; 10use Illuminate\Support\Facades\Hash; 11use Illuminate\Support\Facades\Validator; 12 13 14// 15class TextController extends Controller 16{ 17 protected function validator(array $data) 18 { 19 return Validator::make($data, [ 20 'text.*' => ['required'], 21 ]); 22 } 23 24 protected function create(array $data) 25 { 26 //Textテーブルに保存する 27 Text::create([ 28 'text' => $data['text'], 29 ]); 30 31 } 32} 33
動的でも何でもリクエストパラメーターを取得しDBに入れるだけだと思いますが、パラメーターの取得方法が分からないという事ですか?それともそれ以外の部分でしょうか?
リクエストパラメータのname属性が同じ場合、
動的ボタン1 -> <input type="text" name="text[]">
動的ボタン2 -> <input type="text" name="text[]">
となり、name属性が同じパラメータが贈られるので
コントローラー側でどうやって取得するか知りたいです
以下のようなコードを参考にしてみてください。
https://www.formget.com/php-checkbox/
もしくはチェックボックスを使ったコードを作った事はありますか?あるならやり方は同じなのでそれを真似ればいいです。
リクエストパラメーターの取得方法自体は分かっている前提のコメントなので、それが分からないならリクエストパラメーターそのものの取得方法を調べてみてください。
あなたの回答
tips
プレビュー