I'm trying to achieve to update the image in laravel using Yajra DataTabel, when I insert image in database and folder it seems to be working fine because it stores in the folder and shows in the yajra datatable but when I edit the image it doesn't show image and doesn't store in the database. Anyways these are my code. Thank you in Advance
Controller:
public function edit($id)
{
if (request()->ajax()) {
$shippings = Shipping_data::findOrFail($id);
return response()->json(['result' => $shippings]);
}
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request)
{
$shippingReceipt_name = $request->hidden_shippingReceipt;
$shippingReceipt = $request->file('shippingReceipt');
if($shippingReceipt != ''){
$rules = array(
'name' ,
'mobile',
'items',
'shippingAddress',
'amount',
'facebookLink',
'facebookName',
"modePayment",
"shipVia"=> 'required',
"trackingNumber"=> 'required',
"shippingReceipt" => 'required',
"shippingCharged"=> 'required',
"shippingWeight"=> 'required'
);
$error = Validator::make($request->all(), $rules);
if($error->fails())
{
return response()->json(['errors' => $error->errors()->all()]);
}
$shippingReceipt_name = rand() . '.' . $shippingReceipt->getClientOriginalExtension();
$shippingReceipt->move(public_path('receipt'), $shippingReceipt_name);
}
else {
$rules = array(
'name' ,
'mobile',
'items',
'shippingAddress',
'amount',
'facebookLink',
'facebookName',
"modePayment",
"shipVia"=> 'required',
"trackingNumber"=> 'required',
"shippingReceipt" => 'required',
"shippingCharged"=> 'required',
"shippingWeight"=> 'required',
);
$error = Validator::make($request->all(), $rules);
if($error->fails())
{
return response()->json(['errors' => $error->errors()->all()]);
}
}
$form_data = array(
'name' => $request->name,
'mobile'=> $request->mobile,
'items'=> $request->items,
'shippingAddress'=> $request->shippingAddress,
'amount'=> $request->amount,
'facebookLink'=> $request->facebookLink,
'facebookName'=> $request->facebookName,
"modePayment"=> $request->modePayment,
"shipVia"=> $request->shipVia,
"trackingNumber"=> $request->trackingNumber,
"shippingReceipt"=> $shippingReceipt_name,
"shippingWeight"=> $request->shippingWeight,
"shippingCharged"=> $request->shippingCharged,
);
Shipping_data::whereId($request->hidden_id)->update($form_data);
return response()->json(['success' => 'Shipping Data is successfully updated']);
}
blade.php:
<form method="post" id="shipping_form" class="form-horizontal" enctype='multipart/form-data'>
@csrf
@if(Auth::check() && Auth::user()->role == "admin")
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" name="name" placeholder="Please Enter Client Name"
id="name">
</select>
</div>
<div class="form-group">
<label>Mobile</label>
<input type="text" class="form-control" name="mobile" placeholder="Please Enter Mobile Number"
id="mobile">
</div>
<div class="form-group">
<label>Items Order</label>
<input type="text" class="form-control" name="items" placeholder="Please Enter Items Order"
id="items">
</div>
<div class="form-group">
<label>Shipping Address</label>
<input type="text" class="form-control" name="shippingAddress" id="shippingAddress"
placeholder="Please Enter Shipping Address">
</div>
<div class="form-group">
<label>Amount</label>
<input type="text" class="form-control" name="amount" placeholder="Please Enter Amount"
id="amount">
</div>
<div class="form-group">
<label>Facebook Link</label>
<input type="text" class="form-control" name="facebookLink" id="facebookLink"
placeholder="Please Enter Facebook Link">
</div>
<div class="form-group">
<label>Facebook Name</label>
<input type="text" class="form-control" name="facebookName" id="facebookName"
placeholder="Please Enter Facebook Name">
</div>
<div class="form-group">
<label>Mode of Payment</label>
<input type="text" class="form-control" name="modePayment" id="modePayment"
placeholder="Please Enter Mode of Payment">
</div>
@endif
@if(Auth::check() && Auth::user()->role == "employee")
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" name="name" placeholder="Please Enter Name" id="name"
READONLY>
</div>
<div class="form-group">
<label>Mobile</label>
<input type="text" class="form-control" name="mobile" placeholder="Please Enter Mobile Number"
id="mobile" READONLY>
</div>
<div class="form-group">
<label>Items Order</label>
<input type="text" class="form-control" name="items" placeholder="Please Enter Items Order"
id="items" READONLY>
</div>
<div class="form-group">
<label>Shipping Address</label>
<input type="text" class="form-control" name="shippingAddress" id="shippingAddress" READONLY
placeholder="Please Enter Shipping Address">
</div>
<div class="form-group">
<label>Amount</label>
<input type="text" class="form-control" name="amount" placeholder="Please Enter Amount"
id="amount" READONLY>
</div>
<div class="form-group">
<label>Facebook Link</label>
<input type="text" class="form-control" name="facebookLink" id="facebookLink" READONLY
placeholder="Please Enter Facebook Link">
</div>
<div class="form-group">
<label>Facebook Name</label>
<input type="text" class="form-control" name="facebookName" id="facebookName" READONLY
placeholder="Please Enter Facebook Name">
</div>
<div class="form-group">
<label>Mode of Payment</label>
<input type="text" class="form-control" name="modePayment" id="modePayment" READONLY
placeholder="Please Enter Mode of Payment">
</div>
@endif
<div class="form-group">
<label>Shipping Via</label>
<input type="text" class="form-control" name="shipVia" placeholder="Please Enter Shipping Via"
id="shipVia">
</div>
<div class="form-group">
<label>Tracking Number</label>
<input type="text" class="form-control" name="trackingNumber" id="trackingNumber"
placeholder="Please Enter Tracking Number">
</div>
<div class="form-group">
<label>Shipping Receipt</label>
<br>
<input type="file" class="form-control file-form" name="shippingReceipt" id="shippingReceipt">
</div>
<div class="form-group">
<label>Shipping Charged</label>
<input type="text" class="form-control" name="shippingCharged" id="shippingCharged"
placeholder="Please Enter Shipping Charged">
</div>
<div class="form-group">
<label>Shipping Weight</label>
<input type="text" class="form-control" name="shippingWeight" id="shippingWeight"
placeholder="Please Enter Shipping Weight">
</div>
<br />
<div class="form-group" align="center">
<input type="hidden" name="action" id="action" value="Add" />
<input type="hidden" name="hidden_id" id="hidden_id" />
<input type="submit" name="action_button" id="action_button" class="btn btn-success"
value="Add" />
</div>
</form>
Route:
Route::resource('shipping', 'ShippingController');
Route::post('shipping/update', 'ShippingController@update')->name('shipping.update');
this is my result when I use dd :
array:15 [
"_token" => "lxEGrS8FOvM4zeuqGSJSSjNEhjexj3TkvM11JDCv"
"name" => "Alif Khan"
"mobile" => "9293000245"
"items" => "Nike Men's T-Shirt"
"shippingAddress" => "#8D Barcelona"
"amount" => "100"
"facebookLink" => "https://www.facebook.com/123"
"facebookName" => "Mohammad Khan"
"modePayment" => "GCash"
"shipVia" => "12"
"trackingNumber" => "12"
"shippingCharged" => "12"
"shippingWeight" => "12"
"action" => "Edit"
"hidden_id" => "2"
];
Model: