25. Crear un crud para los roles


2 comentarios

Inicia sesión para comentar

Comentarios:

  • Blanca Segura

    Blanca Segura hace 2 años

    Una ayuda … estoy en la última fase y tengo el error "ErrorException

    Array to string conversion"

    Justo después de agregar el “validate” en la función “store” …

    -------------------------------------------------

      public function store(Request $request)

    {

    $request->validate([

    'name' => 'required'

    ]);

     

    $role = Role::create($request->all());

    $role->permissions()->sync($request->permissions);

    return redirect()->route('admin.roles.edit', $role)->with('info', 'El rol se creó con éxito');

    -----------------------------------------

    • Victor Arana Flores hace 2 años

      El error te da cuando pones el validate? Qué raro, no encuentro ningun error en lo que me has pasado.

      Por capturas, para ver si encuentro el error. Capturas de tu codigo asi como del error, pero el error no solo el mensaje, sino tambien la descripcion del error.

  • Gabriel Griffin

    Gabriel Griffin hace 2 años

    Me da el siguiente error cuando le doy crear rol: “Array to string conversion”. 

    Que puedo hacer?

    • Gabriel Griffin hace 2 años

      public function store(Request $request)

      {

      $request->validate([

      'name' => 'required'

      ]);

       

      $role = Role::create($request->all());

       

      $role->permissions()->sync($request->permissions);

       

      return redirect()->route('admin.roles.edit', $role)->with('info', 'El rol se creó con éxito');

      }

    • Gabriel Griffin hace 2 años

      El store de RoleController te debe quedar así para que no te de el error: "Array to string conversion"

       

      public function store(Request $request)

      {

      $request->validate([

      'name' => 'required'

      ]);

       

      $role = Role::create($request->except('permissions'));

       

      $role->permissions()->sync($request->permissions);

       

      return redirect()->route('admin.roles.edit', $role)->with('info', 'El rol se creó con éxito');

      }

    • Victor Arana Flores hace 2 años

      Hola Gabriel, que bueno que llegaste a la solución. Hace mucho que grabe este curso y no recuerdo exactamente el código que escribí.

    • Blanca Segura hace 2 años

      Muchas Gracias … Ahora veo que el error se debe a que no se especifica el tipo de $request.

      No se modificó: $role = Role::create($request->all());

      Debió de haber sido:

      $role = Role::create($request->except('permissions'));

    • Victor Arana Flores hace 2 años

      No recuerdo bien como estructure el curso, pero puedo aportar con lo siguiente.

      El error que les está apareciendo puede deberse a la forma en la que han habilitado la asignación masiva.

       

      Cuando habilitan la asignación masiva con la propiedad $fillable; a la hora de crear un nuevo registro, Eloquent compara esa propiedad con los campos que le estás pasando, y solo considera aquellos campos definidos en dicha propiedad (me parece que yo use la propiedad fillable por eso no me da ningun error)

      Cuando utilizas la propiedad guarded, lo que hace eloquent, es eliminar del array que le pases, aquellos campos que coincidan con la propiedad guarded, y claro, no va eliminar los permisos y por tanto cuando intentes crear un nuevo rol, tambien tomara los permisos y por eso el error

      La solución sería la que propusiste, o en su defecto, cambiar el guarded por un fillable.