57. Formulario para crear nuevo post
En este capítulo aprenderás cómo crear un formulario para crear nuevos posts en tu proyecto de Laravel. Aprenderás a crear la vista de formulario y a utilizar la validación de formularios de Laravel para validar los datos de entrada del usuario y asegurarte de que sean correctos antes de guardarlos en la base de datos. También aprenderás a utilizar la sintaxis de Eloquent para crear y guardar nuevos posts en la base de datos, y a redirigir al usuario a la página de visualización de posts después de crear un nuevo post. Al final del capítulo, tendrás una comprensión completa de cómo crear y guardar nuevos posts en Laravel, lo que te permitirá crear y administrar fácilmente contenido para tu blog.
4 comentarios
Inicia sesión para comentar
Comentarios:
-
Walter hace 2 años
? 4° Aplicar el plugin CKEditor 5 en la vista create.blade.php
Utilizamos el CDN que copiamos del sitio ckeditor.com/ckeditor-5/download/ y actualizamos el section de JS:
@section('js') <script src="{{ asset('vendor/jQuery-Plugin-stringToSlug-1.3/jquery.stringToSlug.min.js') }}"> <script src="https://cdn.ckeditor.com/ckeditor5/24.0.0/classic/ckeditor.js"> </script> <script> $(document).ready( function() { $("#name").stringToSlug({ setEvents: 'keyup keydown blur', getPut: '#slug', space: '-' }); }); ClassicEditor .create( document.querySelector( '#extract' ) ) .catch( error => { console.error( error ); } ); ClassicEditor .create( document.querySelector( '#body' ) ) .catch( error => { console.error( error ); } ); </script> @endsection
-
Walter hace 2 años
? 3° Configuración del controlador PostController
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\Post; use App\Models\Category; use App\Models\Tag; class PostController extends Controller { public function index() { return view('admin.posts.index'); } public function create() { $categories = Category::pluck('name', 'id'); $tags = Tag::all(); return view('admin.posts.create', compact('categories', 'tags')); } public function store(Request $request) {} public function show(Post $post) {} public function edit(Post $post) {} public function update(Request $request, Post $post) {} public function destroy(Post $post) {} }
-
Walter hace 2 años
? 2° Configuración de la vista create.blade.php
@extends('adminlte::page') @section('title', 'Coders Free') @section('content_header') <h1>Crear nuevo post</h1> @stop @section('content') <div class="card"> <div class="card-body"> {!! Form::open([ 'route' => 'admin.posts.store', 'autocomplete' => 'off' ]) !!} {!! Form::hidden('user_id', auth()->user()->id) !!} <div class="form-group"> {!! Form::label('name', 'Nombre:') !!} {!! Form::text('name', null, [ 'class' => 'form-control', 'placeholder' => 'Ingrese el nombre del post' ]) !!} @error('name') <small class="text-danger">{{ $message }}</small> @enderror </div> <div class="form-group"> {!! Form::label('slug', 'Slug') !!} {!! Form::text('slug', null, [ 'class' => 'form-control disabled', 'placeholder' => 'Ingrese el slug del post', 'readonly' ]) !!} @error('slug') <small class="text-danger">{{ $message }}</small> @enderror </div> <div class="form-group"> {!! Form::label('category_id', 'Categoría') !!} {!! Form::select('category_id', $categories, null, [ 'class' => 'form-control' ]) !!} @error('category_id') <small class="text-danger">{{ $message }}</small> @enderror </div> <div class="form-group"> <p class="font-weight-bold">Etiquetas</p> @foreach ($tags as $tag) <label class="mr-2"> {!! Form::checkbox('tags[]', $tag->id, null) !!} {{ $tag->name }} </label> @endforeach @error('tags') <br> <small class="text-danger">{{ $message }}</small> @enderror </div> <div class="form-group"> <p class="font-weight-bold">Estado</p> <label> {!! Form::radio('status', 1, true) !!} Borrador </label> <label> {!! Form::radio('status', 2) !!} Publicado </label> @error('status') <br> <small class="text-danger">{{ $message }}</small> @enderror </div> <div class="form-group"> {!! Form::label('extract', 'Extracto:') !!} {!! Form::textarea('extract', null, [ 'class' => 'form-control' ]) !!} @error('extract') <small class="text-danger">{{ $message }}</small> @enderror </div> <div class="form-group"> {!! Form::label('body', 'Cuerpo del post:') !!} {!! Form::textarea('body', null, [ 'class' => 'form-control' ]) !!} @error('body') <small class="text-danger">{{ $message }}</small> @enderror </div> {!! Form::submit('Crear post', [ 'class'=>'btn btn-primary' ]) !!} {!! Form::close() !!} </div> </div> @stop @section('css') <link rel="stylesheet" href="/css/admin_custom.css"> @stop @section('js') <script src="{{ asset('vendor/jq-sts-1.3/jquery.stringToSlug.min.js') }}"> <script> $(document).ready( function() { $("#name").stringToSlug({ setEvents: 'keyup keydown blur', getPut: '#slug', space: '-' }); }); </script> @endsection
-
Walter hace 2 años
? 1° Actualización de la vista del listado de posts
Editamos el archivo /resources/views/admin/posts/index.blade.php:
@extends('adminlte::page') @section('title', 'Coders Free') @section('content_header') <a class="btn btn-secondary btn-sm float-right" href="{{ route('admin.posts.create') }}">Nuevo post</a> <h1>Listado de Posts</h1> @stop @section('content') @livewire('admin.posts-index') @stop @section('css') <link rel="stylesheet" href="/css/admin_custom.css"> @stop @section('js') <script> console.log('Hi!'); </script> @stop