i want store this form to database
Form
< form method="POST" action="{{ route('faktor.store') }}" >
@csrf
@php $total = 0 @endphp
@if(session('cart'))
@foreach(session('cart') as $id => $details)
@php $total = $details['price'] * $details['quantity']
@endphp
<input type="hidden" name="name" value="{{ $details['name'] }}">
{{ $details['name'] }}
<input type="hidden" name="quantity" value="{{ $details['quantity'] }}">{{ $details['quantity'] }}
{{ $details['price'] }}
<input type="hidden" name="product_id">
@endforeach
@endif
<h5 className="font-weight-bold">total</h5>
<h5 className="font-weight-bold"><input type="hidden" name="price"
value="{{ $total }}">
{{ $total }}$</h5>
<button type="submit"
className="btn1 btn-lg btn-block btn-primary">
<h5 className="font-weight-semi-bold text-light">
pay
</h5>
</button>
< / form>
and store controller
public function store(Request $request,$id)
{
$request->validate([
'total' => 'required',
]);
$input = $request->all();
$input['user_id'] = Auth::id();
$product = Product::find($id);
if($request->session()->exists('cart'))
{
$oldCart = $request->session()->get('cart');
}
else
{
$oldCart=false;
}
$Cart = new Faktor($oldCart);
$Cart->Add($product, $id);
$request->session()->put('cart',$Cart);
Faktor::create($input);
return redirect()->back();
}
product table
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id');
$table->unsignedBigInteger('category_id');
$table->string('name')->nullable();
$table->text('desc')->nullable();
$table->string('image')->nullable();
$table->string('price');
$table->string('active')->default('0');
$table->string('ok')->default('0');
$table->foreign('user_id')->references('id')->on('users')
->onDelete('cascade');
$table->foreign('category_id')->references('id')->on('categories')
->onDelete('cascade');
$table->timestamps();
faktor table
Schema::create('faktors', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id');
$table->unsignedBigInteger('product_id');
$table->string('total');
$table->string('send')->default('0');
$table->foreign('user_id')->references('id')->on('users')
->onDelete('cascade');
$table->foreign('product_id')->references('id')->on('products')
->onDelete('cascade');
$table->timestamps();
});
how write my store code in controller
my error
Too few arguments to function App\Http\Controllers\FaktorController::store(), 1 passed in G:\test\shop\vendor\laravel\framework\src\Illuminate\Routing\Controller.php on line 54 and exactly 2 expected
CodePudding user response:
Your issue here is that the number of arguments your store
function expects, does not match the number of arguments you provide it with in your form
action
.
public function store(Request $request, $id)
{
// stuff ...
}
You've defined the function as expecting 2 arguments (your first argument - $request
is a special case and will be injected by Laravel so does not require you to provide it). Compare that to your form
action
.
<form method="POST" action="{{ route('faktor.store') }}">
To resolve the error, you need to provide the second argument ($id
) in your action
:
<form method="POST" action="{{ route('faktor.store', ['id' => $id]) }}">
CodePudding user response:
thank you but how can i get id from this session ? i do it from movie and it's important that do end it i want store data form into database
@php
$total = 0
@endphp
@if(session('cart'))
@foreach(session('cart') as $id => $details)
@php
$total = $details['price'] * $details['quantity']
@endphp
< form method="POST" action="{{ route('faktor.store',$details['id']) }}" enctype="multipart/form-data" >
@csrf
{{ $details['name'] }}
{{ $details['quantity'] }}
{{ $details['price'] }}
total
{{ $total }} $
Pay@endforeach
@endif
this is my error for this Form
Undefined array key "id"