I come to you in search of an orientation, I am working with laravel 5.5, I am using some nested lists, like the ones in the following photo:
In the first field I choose the server and in the second, it loads me a few instances from an ajax.
I've been trying to find information on how to perform a multiple insert, which allows me to select one or more instances, but I definitely could not.
If someone asked me to help, I would appreciate it.
Deputy model.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Indisponibilidades extends Model
{
protected $fillable = ['servidor','descripcion','hora_inicio','hora_final','instancia','nivel'];
/*
|------------------------------------------------------------------------------------
| Relations
|------------------------------------------------------------------------------------
*/
public function parentIndisponibilidades()
{
return $this->belongsTo(Indisponibilidades::class);
}
public function server()
{
return $this->belongsTo('App\Servidores','servidor');
}
public function instanciasF()
{
return $this->belongsTo('App\Instancias','instancia');
}
public function ixs()
{
return $this->belongsTo('App\Ixs','instancia');
}
}
Controller:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Http\JsonResponse;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Indisponibilidades;
use App\SistemasOperativos;
use App\Servidores;
use App\Ixs;
use App\Instancias;
class IndisponibilidadController extends Controller
{ /**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$items = Indisponibilidades::with('parentIndisponibilidades','server','instanciasF','ixs')->get();
return view('admin.indisponibilidadVistas.index', compact('items'));
}
public function consultarInstancias(Request $request)
{
$servidores = $request->id;
$ixs = Ixs::where('id_servidor', $servidores)->get();
$respuesta2 = array();
$respuesta2['ixs'] = $ixs->toArray();
return response()->json($respuesta2);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$servidores = Servidores::orderBy('ip','asc')->get();
return view ('admin.indisponibilidadVistas.create', compact('servidores'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
Indisponibilidades::create($request->all());
//return back()->withSuccess(trans('app.success_store'));
return redirect()->route(ADMIN.'.indisponibilidadRoute.index')->withSuccess(trans('app.success_store'));
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$item = Indisponibilidades::findOrFail($id);
return view('admin.indisponibilidadVistas.edit', compact('item'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$item = Indisponibilidades::findOrFail($id);
$item->update($request->all());
//return back()->withSuccess(trans('app.success_update'));
return redirect()->route(ADMIN.'.indisponibilidadRoute.index')->withSuccess(trans('app.success_update'));
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
Indisponibilidades::destroy($id);
return back()->withSuccess(trans('app.success_destroy'));
}
}
View:
<?php $title = isset($item) ? $item->name: "Agregar Indisponibilidad"?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
{!! Form::mySelect('nivel', 'Nivel de Indisponibilidad: ', config('variables.nivel'),['required','id' => 'ListaNivel', 'class'=>'chosen', 'placeholder' => 'Escoge una opción']) !!}
{!! Form::mySelect('servidor', 'Servidor: ', App\Servidores::pluck('ip', 'id')->toArray(), null, ['id' => 'server', 'class'=>'chosen', 'placeholder' => 'Escoge una opción']) !!}
<div class="row"> <div class="col-sm-12">
<div class="box" style="border:1px solid #d2d6de;">
<div class="box-body" style="margin:10px;">
<div class="requerido-con-instancia">
<label class="col-sm-5" for="nombre">Instancia</label>
<br>
<select name="instancia" id="instancia" class="requerido-con-instancia" style="width: 100%" multiple="multiple">
<option value="">Selecciona un servidor primero</option>
</select>
<br>
</div>
</div>
</div>
</div>
</div>
<script>
var rutaConsultaInstancia = "{{ route('admin.ruta.consulta.instancia') }}";
$(document).ready(function(){
selectChange();
});
function selectChange(){
$('#server').on('change', function(e){
var insta = $(this).val();
ajaxSelect(insta);
});
}
function ajaxSelect(id)
{
$.ajax({
type: 'POST',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: rutaConsultaInstancia,
data: {id: id},
dataType: 'json',
beforeSend: function(){
}
}).done(function(response) {
var html = '<option value="">Selecciona una opción</option>';
$.each(response.ixs, function(i, elem){
html += '<option value="'+ elem.id +'">'+ elem.nombre +'</option>'
});
$('#instancia').html(html);
}).fail(function(data) {
});
}
</script>
{!! Form::myInput('datetime-local', 'hora_inicio', 'Hora inicio: ', ['required']) !!}
{!! Form::myInput('datetime-local', 'hora_final', 'Hora final: ' , ['required']) !!}
{!! Form::myInput('text', 'descripcion', 'Descripción: ', ['required']) !!}
<script>
$(function()
{
$("#ListaNivel").change(function()
{
if($("option:selected", this).text() == 'Instancia')
{
$(".requerido-con-instancia").show();
}
else
{
$(".requerido-con-instancia").hide();
}
});
});
</script>