Last active
November 6, 2020 08:13
-
-
Save zuxbrt/b378ee67de20671f47a47748229a9bea to your computer and use it in GitHub Desktop.
Laravel blade partial for checkbox group with inputs.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@foreach ($items as $item) | |
<div class="form-group radio-margin"> | |
<div class="radio col-md-12"> | |
<input id="{{$item['id']}}" | |
name="{{$item['name']}}" | |
value="{{$item['value']}}" | |
@if(isset($item['checked'])) | |
@if($item['checked']) | |
checked | |
@endif | |
@endif | |
type="checkbox" | |
required="" | |
@if( old(substr($item['name'], 0, -2))) @if(in_array($item['value'], old(substr($item['name'], 0, -2)))) checked @endif @endif | |
onchange='toggleTextArea("{{$item["id"]}}", "{{$item["name"]}}")'> | |
<label for="{{$item['id']}}">{{$item['label']}}</label> | |
@if($item['has_text']) | |
<input type="text" | |
name="{{$item['text_name']}}" | |
id="{{$item['text_name']}}" | |
@if(isset($item['text_value'])) | |
@if($item['text_value'] !== null) | |
value="{{$item['text_value']}}" | |
@endif | |
@endif | |
@if(old($item['text_name'])) | |
value="{{old($item['text_name'])}}" | |
@endif | |
class="form-control | |
@if(isset($item['checked'])) | |
@if(!$item['checked']) | |
hidden | |
@endif | |
@else | |
@if(old($item['text_name'])) | |
@else | |
hidden | |
@endif | |
@endif"> | |
@endif | |
</div> | |
</div> | |
@endforeach | |
<script type="application/javascript"> | |
function toggleTextArea(id, name){ | |
if(id && name){ | |
var namelist = document.getElementsByName(name); | |
namelist.forEach(element => { | |
if(element.checked){ | |
let textinput = document.getElementById(element.id + 'text'); | |
if(textinput){ | |
textinput.classList.remove('hidden'); | |
} | |
} else { | |
let textinput = document.getElementById(element.id + 'text'); | |
if(textinput){ | |
textinput.classList.add('hidden'); | |
} | |
} | |
}); | |
} | |
} | |
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- note: | |
service is actually a laravel eloquent model instance, | |
and methods isChecked & getTextInputValue are methods | |
defined in the model, which are used to retrieve data from database | |
@extends('layouts.app.services') | |
@section('content') | |
<form method="POST" action="{{ route("add-car")}}" id="form" novalidate="novalidate"> | |
@csrf | |
<div class="col-md-6"> | |
<div class="form-group m-b-40"> | |
<label><b>Choose a car:</label> | |
</div> | |
@include('partials.radioinputgroup', | |
[ | |
'items' => [ | |
[ | |
[ | |
'id' => 'vehicle1', | |
'name' => 'vehicle', | |
'value' => 'Ferrari', | |
'label' => 'Ferrari', | |
'text_name' => '', | |
'has_text' => false, | |
'checked' => $service->isChecked('vehicle', 'Ferrari') | |
], | |
[ | |
'id' => 'vehicle2', | |
'name' => 'vehicle', | |
'value' => 'Porsche', | |
'label' => 'Porsche', | |
'text_name' => '', | |
'has_text' => false, | |
'checked' => $service->isChecked('vehicle', 'Porsche') | |
], | |
[ | |
'id' => 'vehicle3', | |
'name' => 'vehicle', | |
'value' => 'Bugatti', | |
'label' => 'Bugatti', | |
'text_name' => '', | |
'has_text' => false, | |
'checked' => $service->isChecked('vehicle', 'Bugatti') | |
], | |
[ | |
'id' => 'vehicle4', | |
'name' => 'vehicle', | |
'value' => 'Opel', | |
'label' => 'Opel', | |
'text_name' => '', | |
'has_text' => false, | |
'checked' => $service->isChecked('vehicle', 'Opel') | |
], | |
[ | |
'id' => 'vehicle5', | |
'name' => 'vehicle', | |
'value' => 'Other', | |
'label' => 'Other', | |
'text_name' => 'othervehicletext', | |
'has_text' => true, | |
'checked' => $service->isChecked('vehicle', 'Other'), | |
'text_value' => $service->getTextInputValue('vehicle', 'Other') | |
], | |
] | |
]) | |
</div> | |
</form> | |
@endsection |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@extends('layouts.app.services') | |
@section('content') | |
<form method="POST" action="{{ route("add-car")}}" id="form" novalidate="novalidate"> | |
@csrf | |
<div class="col-md-6"> | |
<div class="form-group m-b-40"> | |
<label><b>Choose a car:</label> | |
</div> | |
@include('partials.radioinputgroup', | |
[ | |
'items' => | |
[ | |
['id' => 'vehicle1', 'name' => 'vehicle', 'value' => 'Ferrari', 'label' => 'Ferrari', 'text_name' => '', 'has_text' => false], | |
['id' => 'vehicle2', 'name' => 'vehicle', 'value' => 'Porsche', 'label' => 'Porsche', 'text_name' => '', 'has_text' => false], | |
['id' => 'vehicle3', 'name' => 'vehicle', 'value' => 'Bugatti', 'label' => 'Bugatti', 'text_name' => '', 'has_text' => false], | |
['id' => 'vehicle4', 'name' => 'vehicle', 'value' => 'Opel', 'label' => 'Opel', 'text_name' => '', 'has_text' => false], | |
['id' => 'vehicle5', 'name' => 'vehicle', 'value' => 'Other', 'label' => 'Other', 'text_name' => 'othervehicletext', 'has_text' => true] | |
] | |
]) | |
</div> | |
</form> | |
@endsection |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App; | |
use Illuminate\Database\Eloquent\Model; | |
class Service extends Model | |
{ | |
protected $table = 'vehicles'; | |
protected $fillable = [ | |
'id', | |
'vehicle', | |
'other_vehicle_text', | |
]; | |
/** | |
* Check is field checked in partial for radioinputgroup. | |
* @param string $field_name | |
* @param string $field_value | |
* | |
* @return bool | |
*/ | |
public function isChecked(string $field_name, string $field_value): bool | |
{ | |
switch ($field_name) { | |
case 'vehicle': | |
if($field_value === $this->vehicle){ | |
return true; | |
} | |
return false; | |
break; | |
} | |
/** | |
* Get input text value for checkboxinputgroup partial. | |
* @param string $text_field_name | |
* @param string $field_checked_value | |
* | |
*/ | |
public function getTextInputValue(string $text_field_name, string $field_checked_value) | |
{ | |
// if checked field value is same as the input value, get text from it | |
// else, return null | |
switch ($text_field_name) { | |
case 'vehicle': | |
if($field_checked_value == $this->other_vehicle_text){ | |
return $this->other_vehicle_text; | |
} | |
return ''; | |
break; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment