Reputation: 71
I am trying to store Stat and End time for each Day.
These Select elements refer to 'Start Time' and 'Ending Time'
I am able to get the values but I am not sure how to store and retrieve them in my view. I am storing them by combining both arrays with the days separately and then json_encode
but I am not able to retrieve them.
Store Blade View
<div class="form-check">
<input class="form-check-input" type="checkbox" name="days[]" value="Monday" id="flexCheckDefault">
<label class="form-check-label" for="flexCheckDefault">
Monday
</label>
<div class="reveal-if-active">
<div class="row">
<div class="col-md-4">
<label for="which-dog">From</label>
<select name="from[]" class="form-control">
<option value="1">01:00</option>
<option value="2">02:00</option>
<option value="3">03:00</option>
<option value="4">04:00</option>
<option value="5">05:00</option>
<option value="6">06:00</option>
<option value="7">07:00</option>
<option value="8">08:00</option>
<option value="9">09:00</option>
<option value="10">10:00</option>
<option value="11">11:00</option>
<option value="12">12:00</option>
<option value="13">13:00</option>
<option value="14">14:00</option>
<option value="15">15:00</option>
<option value="16">16:00</option>
<option value="17">17:00</option>
<option value="18">18:00</option>
<option value="19">19:00</option>
<option value="20">20:00</option>
<option value="21">21:00</option>
<option value="22">22:00</option>
<option value="23">23:00</option>
<option value="24">24:00</option>
</select>
</div>
<div class="col-md-4">
<label for="which-dog">To</label>
<select name="to[]" class="form-control">
<option value="1">01:00</option>
<option value="2">02:00</option>
<option value="3">03:00</option>
<option value="4">04:00</option>
<option value="5">05:00</option>
<option value="6">06:00</option>
<option value="7">07:00</option>
<option value="8">08:00</option>
<option value="9">09:00</option>
<option value="10">10:00</option>
<option value="11">11:00</option>
<option value="12">12:00</option>
<option value="13">13:00</option>
<option value="14">14:00</option>
<option value="15">15:00</option>
<option value="16">16:00</option>
<option value="17">17:00</option>
<option value="18">18:00</option>
<option value="19">19:00</option>
<option value="20">20:00</option>
<option value="21">21:00</option>
<option value="22">22:00</option>
<option value="23">23:00</option>
<option value="24">24:00</option>
</select>
</div>
</div>
</div>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="days[]" value="Tuesday" id="flexCheckChecked">
<label class="form-check-label" for="flexCheckChecked">
Tuesday
</label>
<div class="reveal-if-active">
<div class="row">
<div class="col-md-4">
<label for="which-dog">From</label>
<select name="from[]" class="form-control">
<option value="1">01:00</option>
<option value="2">02:00</option>
<option value="3">03:00</option>
<option value="4">04:00</option>
<option value="5">05:00</option>
<option value="6">06:00</option>
<option value="7">07:00</option>
<option value="8">08:00</option>
<option value="9">09:00</option>
<option value="10">10:00</option>
<option value="11">11:00</option>
<option value="12">12:00</option>
<option value="13">13:00</option>
<option value="14">14:00</option>
<option value="15">15:00</option>
<option value="16">16:00</option>
<option value="17">17:00</option>
<option value="18">18:00</option>
<option value="19">19:00</option>
<option value="20">20:00</option>
<option value="21">21:00</option>
<option value="22">22:00</option>
<option value="23">23:00</option>
<option value="24">24:00</option>
</select>
</div>
<div class="col-md-3">
<label for="which-dog">To</label>
<select name="to[]" class="form-control">
<option value="1">01:00</option>
<option value="2">02:00</option>
<option value="3">03:00</option>
<option value="4">04:00</option>
<option value="5">05:00</option>
<option value="6">06:00</option>
<option value="7">07:00</option>
<option value="8">08:00</option>
<option value="9">09:00</option>
<option value="10">10:00</option>
<option value="11">11:00</option>
<option value="12">12:00</option>
<option value="13">13:00</option>
<option value="14">14:00</option>
<option value="15">15:00</option>
<option value="16">16:00</option>
<option value="17">17:00</option>
<option value="18">18:00</option>
<option value="19">19:00</option>
<option value="20">20:00</option>
<option value="21">21:00</option>
<option value="22">22:00</option>
<option value="23">23:00</option>
<option value="24">24:00</option>
</select>
</div>
</div>
</div>
</div>
controller
**ADD FUNCTION**
$from = json_encode(array_combine($request->days, $request->from));
$to = json_encode(array_combine($request->days, $request->to));
$business->hrs_from = $from;
$business->hrs_to = $to;
**EDIT FUNCTION**
dd((json_decode($businesses[0]->hrs_from)));
Response From Dump Die
{#1130 ▼
+"Monday": "1"
+"Tuesday": "1"
+"Thursday": "1"
+"Wednesday": "1"
}
Upvotes: 1
Views: 423
Reputation: 318
Add second parameter to json_decode to get array
dd((json_decode($businesses[0]->hrs_from, true)));
Upvotes: 2
Reputation: 2685
You can use nested arrays in html form input names. For example:
from[day][]
from[time][]
or even:
from[day][0][]
from[time][0][]
from[day][1][]
from[time][1][]
It should arrive correctly on the backend. Not sure if this helps?
I have found it especially useful with php code that has a lot of data and especially in tables.
Upvotes: 1