Aprende Laravel desde cero

Terminando el diseño de la aplicación

En esta lección finalizamos el diseño de la aplicación con Bootstrap 4

Regresar
Dario Castañeda
Dario Castañeda
Amigo, a mi se me hace doble navegación al final de la lista, una normal aunque sin diseño y la otra enorme. Aunque le estoy haciendo con Laravel 8. Sera que algo estoy haciendo mal?
Nicolas Aldana
Nicolas Aldana
Buen curso , claro y conciso
Debería empezar por este curso o por el de laravel básico que es muy similar

juan garzon
juan garzon
Jorge, realmente estoy muy agradecido por este contenido. He aprendido bastante. Tengo un inconveniente. Resulta qué al eliminar un proyecto, yo hago una petición por ajax con jquery y cargo el formulario de respuesta sobre una modal de confirmación de sí desea o no eliminar el proyecto. La ejecución del formjlario de eliminación funciona correctamente. Pero tengo un problema cuando hago esto mismo en laravel mix. Al hacer la petición y recibir el formulario en la modal, el action no apunta a la ruta localhost:3000, sinio que apunta a la url real, a laravel.test. Hay alguna forma de corregir este comportamiento en laravel mix? agradezco tu ayuda. 
Jesus Lopez Florez
Jesus Lopez Florez
el mensaje de alert no se cierra
Doris Morales
Doris Morales
Jorge, muchas gracias por tus excelentes videos tutoriales, explicas super bien.
Debido a que ninguna de las opciones me funcionan para que se puedan crear y actualizar campos únicos, nos podrías hacer el favor de indicarnos o aclararnos la forma en que de debe realizar.
Muchas gracias por tu respuesta.

Jorge Davila
Jorge Davila
Para crear un campo unico lo debes hacer en la migracion::

Schema::create('tabla',function(Blueprint $table){

  $table->increments('id');
  $table->string('slug')->unique();
  $table->timestamps();
});

Utilizando el metodo unique se hace esta parte.

Para validarlo en tu Form Request y/o validator simplemente haces lo siguiente:


use Illuminate\Validation\Rule;

Validator::make($request, [
    'slug' => [
        'required',
        Rule::unique('slug')->ignore($user->id),
    ],
]);
Esto haria que ignore dicha regla al editar el campo. Es decir si tu campo ya esta creado y haces un update usando el mismo validator ignorara la regla unique. Sin embargo si lo haces al crear un nuevo registro la regla tendra que cumplirse.

Y ya simplemente queda guardar en la base de datos, mismo que asumire que ya sabes hacer. Espero haberte sido de ayuda.
Doris Morales
Doris Morales
Muchas gracias por contestarme y tan rápido.

De acuerdo a su respuesta le comento:

1. Tal y como esta escrita, no supe cómo aplicarla en la función rules() de SaveProjectRequest.
2. Intente lo siguiente (rules()), pero sale el error: ErrorException   Undefined variable: project
    'url'   => [
      'required',
      Rule::unique('url')->ignore($project->id)
    ],
3.Otra opción, igual sale el mensaje de error: ErrorException     Trying to get property 'id' of non-object
    'url'   => [
        'required',
        Rule::unique('url')->ignore($this->project->id)
      ],
4. Y la siguiente opción ha sido la que hasta el momento no se me ha presentado errores al crear ni actualizar un proyecto:
     'url'   => [
        'required',
        Rule::unique('projects', 'url')->ignore($this->project)
      ],

Por favor indicarme si esta solución es la mas indicada o correcta.

De antemano agradezco su valiosa colaboración y aportes.
Jorge Davila
Jorge Davila
Puedes reemplazar esa linea por que helper request() y hacer lo siguiente:

 Rule::unique('projects', 'url')->ignore(request()->id)
Dicho helper te devuelve una instancia de la clase request, por lo que puedes encandenar el llamado para obtener el id del proyecto, en caso de no existir devolveria nulo pero laravel se encarga de resolver esa parte sin problemas. Espero con esto puedas continuar.
Josef
Josef
Listo! el mismo SaveProjectRequest para ambas acciones: store y update; y quedaría así:

    public function rules()
    {
        return [
            'title' => 'required',
            'url' => 'required|unique:projects,url,' . $this->project->id,
            'description' => 'required',
        ];
    }
Ahora si puedo editar un proyecto teniendo en cuenta la url debe ser unica para cada proyecto y que la ignore cuando la acción es un update. 
Jorge Davila
Jorge Davila
Se puede lograr fácilmente por medio del rule "unique".Dicho rule toma por primer parametro la tabla y segundo el campo.

'email' => 'unique:users,email_address'
Si estas pensando en usar el mismo Form Request para mas de un procesó, no  olvides agregar como tercer parametro el id para que te permita editar un campo que ya haya sido guardado, dé  lo contrario en los procesos de edición no te permitirá cambiar los datos, ya  que deben ser unico.Dicho esto, quedaría  algo así:

'email' => 'unique:users,email_address,'.$request->id

Josef
Josef
Hola Jorge , gracias por regar el conociemiento de manera tan clara..  quería preguntarte como hago para validar un campo unico como es el caso de url en la tabla projects cuando voy actualizar usando el mismo SaveProjectRequest  .. gracias!