Este curso esta genial, ojalá sigan haciendo mas cursos de laravel, y con el profesor italo
Introducción
Bienvenida y configuración inicial
Estructura principal de Laravel
Fundamentos de Laravel
Artisan
Routes
Views
Templates
Controllers
Migrations
Models
Eloquent
Relationships
Área privada
Enfoque del proyecto
Inicio de sesión
Sistema de inicio de sesión
Panel administrativo
Listado de publicaciones
Función de eliminar
Crear y editar (primer paso)
Controles de un formulario
Función de guardar
Función de editar
Validación
Registros duplicados
Diseño web
Diseño web
Diseño personalizado
Página home
Destacado
Publicación individual
Buscador
Optimización
Cierre
Conclusiones
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 7
Preguntas 2
Este curso esta genial, ojalá sigan haciendo mas cursos de laravel, y con el profesor italo
Si al momento de imprimir el valor del post tanto de title como de body se le antepone un @ no será necesario mandar Post $post en la función create(), por ejemplo:
Funciones de edit() y create():
public function create(){
return view('posts.create');
}
public function edit(Post $post){
return view('posts.edit', compact('post'));
}
Código del archivo _form.blade.php():
<label class="uppercase text-gray-700 text-xs">Título</label>
<input type="text" name="title" class="rounded border-gray-200 w-full mb-4" value="{{ @$post->title }}">
<label class="uppercase text-gray-700 text-xs">Contenido</label>
<textarea name="body" id="" rows="5" class="rounded border-gray-200 w-full mb-4">{{ @$post->body }}</textarea>
<div class="flex justify-between items-center">
<a href="{{ route('posts.index') }}" class="text-indigo-600">Volver</a>
<input type="submit" value="Enviar" class="bg-gray-800 text-white rounded px-4 py-2">
</div>
Tengo mi código así y funciona sin problemas. 😁
Importante, tuve un error con Create y no hallaba cual era.
Revise algunos foros y me percate que al momento de hacer un CRUD con laravel las rutas deben estar en plural. Así que dejo un breve guia:
Controller: Singular
Model: Singular
Routes: Plural (sobretodo si usas CRUD)
Espero que les sirva y no pasen 2 horas (como yo) buscando que esta mal.
Para el botón de envío se puede usar también el isset($post)
y así variar el contenido o texto del botón para los casos de edición o creación, ya que si se recibe información de $post
, significa que se desea editar, y en caso contrario, estarémos creando una nueva publicación.
<div class="flex gap-4 items-center justify-between">
<a href="{{ route('posts.index') }}" class="text-indigo-600">Volver</a>
<button type="submit" class="bg-gray-800 text-white rounded px-4 py-2">{{ isset($post) ? 'Editar Post' : 'Crear Post'}}</button>
</div>
Por algún motivo a mi me sigue arrojando el mismo error de Undefined variable $post al momento de querer crear un post, por más de que agregue el parámetro de $post en el método de create y mi solución fue esta:
<input type="text" name="title" id="title" class="rounded border-gray-200 w-full mb-4" value="{{ isset($post) ? $post->title : '' }}"
/>
<textarea name="body" id="body" rows="5" class="rounded border-gray-200 w-full mb-4">{{ isset($post) ? $post->body : '' }}</textarea>
Si quieren ver los cambios de html y el front en general usen npm run dev para verlos apenas guarden, mientras también tienen activo el comando php artisan serve en otro terminal
Una opción que hice al mostrar el formulario de posts fue usando Null coalescing operator.
Ya que si el primer valor es nulo, entonces mostrará el siguiente dato si existe:
<label for="" class="uppercase text-gray-700 text-xs">Título</label>
<input type="text" name="title" class="rounded border-gray-200 w-full mb-4" value="{{$post->title ?? old('title') ?? ''}}">
<label for="" class="uppercase text-gray-700 text-xs">Contenido</label>
<textarea rows="10" name="body" class="rounded border-gray-200 w-full mb-4">{{$post->body ?? old('body') ?? ''}}</textarea>
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.