🎉 Acceso anticipado Black Friday: Hasta un 80% de descuento en nuestros cursos

6d: 8h: 9m:20s'
Alejandro de Luna Omaña
Alejandro de Luna Omaña
Laravel
Comparte:

laravel markdown mail formulario input checkbox

hola !! a ver si alguien me puede ayudar, estoy realizando un envio de mail desde laravel markdown, ya he podido pasar todas las variables del formulario excepto los inputs del checkbox.
Formulario:
                                <div class="form-group form-check form-check-inline">
                                    <input class="form-check-input" type="checkbox" value="servicio1"
                                        name="servicio[]">
                                    <label class="form-check-label" for="Limpieza doméstica">Servicio1</label>
                                </div>
                                <div class="form-check form-check-inline">
                                    <input class="form-check-input" type="checkbox" value="Servicio2"
                                        name="servicio[]">
                                    <label class="form-check-label" for="Limpieza de oficina">Servicio2</label>
                                </div>

Controlador:
request()->validate([
            'servicio' => 'required',
],
[
            'servicio.required' => 'Debes seleccionar un servicio a contratar'
]);

$contratacion = [
            'servicio' => $request->input('servicio[]'),
];
app\Mail\Contratar
class Contratar extends Mailable
{
    use Queueable, SerializesModels;

    public $datos;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($datos)
    {
        $this->datos = $datos;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->markdown('emails.contratacion')
            ->from('webapp@homehelp.com.mx',)
            ->subject('[Contrataciones] - Homehelp Webapp')
            ->with('datos', $this->datos);;
    }
}
views/emails/contratacion.blade.php
@component('mail::message')
<center><img src="/img/logo.png" /></center><br><br>
<h1> {{ $datos['nombres'] }} </h1>
Ha solicitado el siguiente servicio:<br>
<p></p>
<h1>{{ $datos['servicio[]'] }}</h1>
<p></p>
Nombres:<b> {{ $datos['nombres'] }} </b><br>
Apellidos:<b> {{ $datos['apellidos'] }}</b><br>
E-mail:<b> {{ $datos['email'] }}</b><br>
Celular:<b> {{ $datos['celular'] }}</b>
<p></p>
Domicilio:<b> {{ $datos['domicilio'] }}</b><br>
Colonia:<b> {{ $datos['colonia'] }}</b><br>
Código Postal:<b> {{ $datos['codigopostal'] }}</b><br>
Referencia:<b> {{ $datos['referencia'] }}</b>
<p></p>
<strong>Requerimiento especial del cliente:</strong>
<p></p>
@component('mail::panel')
<h1>{{ $datos['mensaje'] }}</h1>
@endcomponent
Gracias,<br>
{{ config('app.name') }}
@endcomponent

Pero me arroja el siguiente error:
Undefined index: servicio[] (View: C:\xampp\htdocs\HomeHelp\resources\views\emails\contratacion.blade.php)
Alejandro de Luna Omaña
Alejandro de Luna Omaña (1228 xp)
Despues de buscar... esta fue la solucion, tuve que hacer un foreach en views/emails/contratacion.blade.php

    @foreach($datos['servicio'] as $item)
    {{ $item}}
    @endforeach
1
Jorge Davila
Jorge Davila (838 xp)
El problema es que estabas intentando acceder al indice 'servicio[]' aunque el nombre del inidice es 'servicio'. Aunque el indice sea una array su nombre no cambia.Ese error detono por eso.Igual el foreach te soluciona el siguiente problema que te hubiera arrojado. Te recomiendo usar un forelse en caso de que el indice servicios este vacio  puedes mostrar un valor por defecto.

@forelse ($datos['servicio'] as $row)

<li>{{$row}}</li>
@empty
<strong style="color:red;">No se ha registrado ningun servicio.</strong>
@endforelse
1