@section('js')
...
<script src="https://cdn.ckeditor.com/ckeditor5/25.0.0/classic/ckeditor.js">
<script>
ClassicEditor
.create( document.querySelector('#description'))
.catch( error => {
console.error( error );
} );
@section('js')
Mostrando entradas con la etiqueta Formularios. Mostrar todas las entradas
Mostrando entradas con la etiqueta Formularios. Mostrar todas las entradas
CkEditor (texto enriquecido) en una view
Añadir texto enriquecido en una view:
LaravelCollective: Forms ejemplos
CREATE:
EDIT:
DELETE
PD: Aunque la forma más correcta de hacer el delete es mejor mandarlo con un onclick a un JS para así poder hacer un confirm.
COMBO:
Una de las mejores cosas de LaravelCollective es que no hay que indicarle qué elemento está selected en el combo pues a partir del valor que tenga en la BD ya lo deja seleccionado por tanto se usa exactamente lo mismo para la view de create que la de edit.
Por tanto en ambas views se puede hacer un include como por ejemplo:
Para rellenar un combo con el valor de otra tabla en el controller no se puede usar el método all() sino pluck:
Y luego en la view:
CHECKBOX:
RADIOS:
TEXTAREA:
CAMPO OCULTO:
FILE:
{!! Form::open(array('route' => 'productos.store')) !!}
{{ csrf_field() }}
<p>
{!! Form::label('nombre_producto', 'Nombre producto:') !!}
{!! Form::text('nombre_producto', null, array('placeholder' => 'Nombre del producto','class' => 'form-control')) !!}
</p>
<p>
{{ Form::submit('Modificar producto', array('type' => 'submit', 'class' => 'btn btn-default btn-sm', 'onclick' => 'return checkFormProd()')) }}
</p>
{!! Form::close() !!}
EDIT:
{!! Form::model($producto, ['method' => 'PATCH','route' => ['productos.update', encrypt($producto->id)], 'files' => true]) !!}
{{ csrf_field() }}
<p>
{!! Form::label('nombre_producto', 'Nombre producto:') !!}
{!! Form::text('nombre_producto', null, array('placeholder' => 'Nombre producto','class' => 'form-control')) !!}
</p>
<p>
{{ Form::submit('Modificar producto', array('type' => 'submit', 'class' => 'btn btn-default btn-sm', 'onclick' => 'return checkFormProd()')) }}
</p>
{!! Form::close() !!}
DELETE
{!! Form::open(['method' => 'DELETE','route' => ['productos.destroy', encrypt($producto->id)]]) !!}
{{ csrf_field() }}
<p>{{ Form::submit('Borrar producto', array('type' => 'submit', 'class' => 'btn btn-default btn-sm')) }}</p>
{!! Form::close() !!}
PD: Aunque la forma más correcta de hacer el delete es mejor mandarlo con un onclick a un JS para así poder hacer un confirm.
COMBO:
En el controller tenemos por ejemplo:
$colors = [
'red' => 'Rojo',
'yellow' => 'Amarillo',
'green' => 'Verde'
];
Y se lo pasamos a la view donde el combo se genera:
{!! Form::label('color', 'Color:') !!}
{!! Form::select('color', $colors, null, ['class' => 'form-control']) !!}
Una de las mejores cosas de LaravelCollective es que no hay que indicarle qué elemento está selected en el combo pues a partir del valor que tenga en la BD ya lo deja seleccionado por tanto se usa exactamente lo mismo para la view de create que la de edit.
Por tanto en ambas views se puede hacer un include como por ejemplo:
@include('admin.categories.partials.form')
Para rellenar un combo con el valor de otra tabla en el controller no se puede usar el método all() sino pluck:
$categories = Category::pluck('name', 'id');
Y luego en la view:
{!! Form::label('category_id', 'Categoría:') !!}
{!! Form::select('category_id', $categories, null, ['class' => 'form-control']) !!}
CHECKBOX:
@foreach ($tags as $tag)
<label class="mr-2">
{!! Form::checkbox('tags[]', $tag->id, null) !!}
{{ $tag->name }}
</label>
@endforeach
RADIOS:
<label>
{!! Form::radio('status', 1, true) !!}
Borrador
</label>
<label>
{!! Form::radio('status', 2) !!}
Publicado
</label>
TEXTAREA:
{!! Form::label('extract', 'Extracto:') !!}
{!! Form::textarea('extract', null, ['class' => 'form-control']) !!}
CAMPO OCULTO:
{!! Form::hidden('user_id', auth()->user()->id) !!}
FILE:
{!! Form::file('file', ['class' => 'form-control-file', 'accept' => 'image/*']) !!}
Form: Diferentes componentes
Ejemplos elementos formularios:
Para crearte el combo a partir de la tabla que mandas desde el controller:
Y luego en la vista:
{!! Form::model($pelYoutube, ['method' => 'PATCH','route' => ['youtube.update', $pelYoutube->id], 'files' => true]) !!}
{!! Form::text('nom_pel_youtube', null, array('placeholder' => 'Nombre','class' => 'form-control')) !!}
{{ Form::button('Modificar Película YouTube', array('type' => 'submit', 'class' => 'btn btn-default btn-sm', 'onclick' => 'return checkFormCineasta()')) }}
{{ Form::file('nomFoto', $attributes = array('enctype' => 'multipart/form-data')) }}
Para crearte el combo a partir de la tabla que mandas desde el controller:
public function create() {
$peliculas = Youtube::orderBy('nom_pel_youtube', 'asc')->get()->toArray();
$cineastas = artYoutube::orderBy('nom_art_youtube', 'asc')->get()->toArray();
return view('garci/create', compact('peliculas', 'cineastas'));
}
Y luego en la vista:
$arrPeliculas = array();
foreach ($peliculas as $item) {
$arrPeliculas[$item["id"]] = $item["nom_pel_youtube"];
}
$arrPeliculas[0] = ""; // por si no selecciona ninguno
{{ Form::select('id_pel_youtube', $arrPeliculas, $arrHistPelYoutube[0]->id_pel_youtube) }}
Formularios: Combos
En el controller:
En la vista:
Si en una modificación para que quede seleccionado el item del combo:
$peliculas = Youtube::orderBy('nom_pel_youtube', 'asc')->get()->toArray();
$cineastas = artYoutube::orderBy('nom_art_youtube', 'asc')->get()->toArray();
return view('garci/create', compact('peliculas', 'cineastas'));
En la vista:
<?php
$arrPeliculas = array();
foreach ($peliculas as $item) {
$arrPeliculas[$item["id"]] = $item["nom_pel_youtube"];
}
$arrPeliculas[0] = ""; // por si no selecciona ninguno
$arrCineastas = array();
foreach ($cineastas as $item) {
$arrCineastas[$item["id"]] = $item["nom_art_youtube"];
}
$arrCineastas[0] = ""; // por si no selecciona ninguno
?>
<div class="form-group">
<strong>Película:</strong>
{{ Form::select('id_pelicula', $arrPeliculas, "") }}
</div>
<div class="form-group">
<strong>Director:</strong>
{{ Form::select('id_director', $arrCineastas, "") }}
</div>
Si en una modificación para que quede seleccionado el item del combo:
{{ Form::select('id_director', $arrCineasta, $pelicula->id_director) }}
Formularios: POST CSRF
{!! Form::open(array('route' => 'peliculas.store', 'files'=>true)) !!}
{{ csrf_field() }}
...
{!! Form::close() !!}
Formularios
Formularios:
En config/app:
En provider añadir:
En Alias:
composer require "laravelcollective/html":"^5.3.0"
En config/app:
En provider añadir:
Collective\Html\HtmlServiceProvider::class,
En Alias:
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class
Suscribirse a:
Entradas (Atom)