tutorial instalar español ejemplos php laravel

php - instalar - laravel español



Error inesperado de Laravel "el usuario de la clase contiene 3 métodos abstractos..." (8)

"Primero, agregue una nueva memoria recordatoria nulable de VARCHAR (100), TEXTO o equivalente a su tabla de usuarios, que se pone como $table->text(''remember_token'', 100)->nullable(); en la tabla luego, php artesano migra y actualiza tu modelo de Elq también.

Mientras programaba mi aplicación Autenticación en Laravel, me encontré con un error que nunca había visto antes. He estado intercambiando ideas durante casi una hora sobre la causa de este problema, pero todavía no puedo encontrar una solución.

Error:

El usuario de clase contiene 3 métodos abstractos y, por lo tanto, debe declararse abstracto o implementar los métodos restantes (Illuminate / Auth / UserInterface :: getRememberToken, Illuminate / Auth / UserInterface :: setRememberToken, Illuminate / Auth / UserInterface :: getRememberTokenName)

Modelo de User.php:

<?php use Illuminate/Auth/UserInterface; use Illuminate/Auth/Reminders/RemindableInterface; class User extends Eloquent implements UserInterface, RemindableInterface { protected $fillable = [ "email", "username", "password", "password_temp", "code", "active", "created_at", "updated_at", "banned" ]; /** * The database table used by the model. * * @var string */ protected $table = ''users''; /** * The attributes excluded from the model''s JSON form. * * @var array */ protected $hidden = array(''password''); /** * Get the unique identifier for the user. * * @return mixed */ public function getAuthIdentifier() { return $this->getKey(); } /** * Get the password for the user. * * @return string */ public function getAuthPassword() { return $this->password; } /** * Get the e-mail address where password reminders are sent. * * @return string */ public function getReminderEmail() { return $this->email; } }

Y el RegisterController.php

<?php class RegisterController extends BaseController { public function getRegister() { return View::make(''template.home.register''); } public function postRegister() { $rules = [ "email" => "required|email|max:50|unique:users", "username" => "required|max:50|min:5|unique:users", "password" => "required|max:50|min:6", "password_again"=> "required|same:password", ]; $messages = ["required" => "This field is required." ]; $validator = Validator::make(Input::all(), $rules, $messages); if($validator->fails()) { return Redirect::route(''register'')->withErrors($validator)->withInput(); } else { $email = Input::get(''email''); $username = Input::get(''username''); $password = Input::get(''password''); $code = str_random(60); $user = User::create([ ''email'' => $email, ''username'' => $username, ''password'' => Hash::make($password), ''code'' => $code, ''activated'' => 0, ''banned'' => 0 ]); if ($user) { Mail::send(''template.email.activate'', [''link'' => URL::route(''activate'', $code), ''username'' => $username], function($message) use ($user) { $message->to($user->email, $user->username)->subject(''Account Registration''); }); return Redirect::route(''register'')->with(''homeError'', ''There was a problem creating your account.''); } } return Redirect::route(''register'')->with(''homeError'', ''Account could not be created.''); } }


Ah lo encontró.

Su actualización de Laravel aparentemente documentada.

Puede verificar los documentos de Laravel para solucionar sus problemas:

"Primero, agregue una nueva memoria recordatoria nulable de VARCHAR (100), TEXTO o equivalente a su tabla de usuarios.

A continuación, si está utilizando el controlador de autenticación Eloquent, actualice su clase de usuario con los siguientes tres métodos:

public function getRememberToken() { return $this->remember_token; } public function setRememberToken($value) { $this->remember_token = $value; } public function getRememberTokenName() { return ''remember_token''; }

"

Visita http://laravel.com/docs/upgrade para más detalles.


El usuario de clase contiene 6 métodos abstractos y, por lo tanto, debe declararse abstracto o implementar los métodos restantes

(Iluminar / Auth / UserInterface :: getAuthIdentifier,

Illuminate / Auth / UserInterface :: getAuthPassword,

Iluminar / Auth / UserInterface :: getRememberToken, ...)


El usuario de clase contiene 6 métodos abstractos y, por lo tanto, debe declararse abstracto o implementar los métodos restantes

(Illuminate/Auth/UserInterface::getAuthIdentifier, Illuminate/Auth/UserInterface::getAuthPassword, Illuminate/Auth/UserInterface::getRememberToken, ... )

Solución: agregas este código en la clase de usuario (me funciona)

use Authenticatable, CanResetPassword;

Fuente: GitHub


Este es un problema de actualización. Laravel nos obliga a actualizar el modelo User.php con el siguiente código para solucionar este problema.

Nota: Todas las sesiones existentes de "recordarme" quedarán invalidadas por este cambio, por lo que todos los usuarios se verán obligados a volver a autenticarse con su aplicación.

public function getRememberToken() { return $this->remember_token; } public function setRememberToken($value) { $this->remember_token = $value; } public function getRememberTokenName() { return ''remember_token''; }


No soy un profesional en la implementación de interfaces PHP , pero creo que debes incluir todos los métodos de UserInterface y RemindableInterface en tu clase User (ya que los implementa). De lo contrario, la clase es "abstract" y debe definirse como tal.

Por lo que sé, una interfaz PHP es un conjunto de pautas que una clase debe seguir. Por ejemplo, puede tener una interfaz general para una tabla de base de datos específica. getRow() definición de métodos como getRow() , insertRow() , deleteRow() , updateColumn() , etc. Luego puede usar esta interfaz para crear múltiples clases diferentes para diferentes tipos de bases de datos (MySQL, PostgreSQL, Redis), pero todos deben seguir las reglas de la interfaz. Esto facilita la migración, ya que sabe que no importa qué controlador de base de datos esté utilizando para recuperar datos de una tabla, siempre implementará los mismos métodos definidos en su interfaz (en otras palabras, abstraer la lógica específica de la base de datos de la clase).

3 posibles soluciones, hasta donde yo sé:

abstract class User extends Eloquent implements UserInterface, RemindableInterface { } class User extends Eloquent { } class User extends Eloquent implements UserInterface, RemindableInterface { // include all methods from UserInterFace and RemindableInterface }

Creo que # 2 es lo mejor para ti, ya que si tu clase no implementa todos los métodos de UserInterface y RemindableInterface ¿por qué necesitarías decir que sí?


También recibo este error. Luego agregué:

getRememberToken() setRememberToken($value) getRememberTokenName()

aquí después de que el código esté funcionando


UserTrait el error añadiendo UserTrait a User.php . Obtenga el archivo original User.php here . Si no necesitas las cosas de rememberMe , solo necesitas esto:

<?php use Illuminate/Auth/UserTrait; use Illuminate/Auth/UserInterface; class User extends Eloquent implements UserInterface { use UserTrait; }