No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de Introducci贸n a Laravel 9

Curso de Introducci贸n a Laravel 9

Profesor Italo Morales F

Profesor Italo Morales F

Controles de un formulario

19/31
Recursos

Aportes 7

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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:

  • Para el input
<input type="text" name="title" id="title" class="rounded border-gray-200 w-full mb-4" value="{{ isset($post) ? $post->title : '' }}" 
/>
  • Para el textarea
<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>