es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo modificar la interfaz de fortify CreatesNewUsers.php?

Necesito modificar la interfaz /vendor/laravel/fortify/src/Contracts/CreatesNewUsers.php y agregar 1 parámetro bool adicional, ya que al utilizar CreateNewUser en diferentes lugares de la aplicación, las reglas de validación son diferentes. Por ejemplo, en algunos lugares, la contraseña no se completa en la creación del usuario, pero debe ser una función separada.

Así que copié el archivo /project/resources/fortify/CreatesNewUsers.php con el contenido:

namespace Laravel\Fortify\Contracts;

interface CreatesNewUsers
{
    public function create(array $input, bool $makeValidation);
}

Y en el archivo app/Actions/Fortify/CreateNewUser.php, modifiqué:

namespace App\Actions\Fortify;

use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Resources\Fortify\CreatesNewUsers; // Referencia a mi interfaz
use Laravel\Jetstream\Jetstream;

class CreateNewUser implements CreatesNewUsers
{
    use PasswordValidationRules;

public function create(array $input, bool $makeValidation)
    {
...

Pero al intentar utilizar esta clase, recibí un error:

Interfaz "Resources\Fortify\CreatesNewUsers" no encontrada

¿Cuál es la forma correcta?

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    El error que está recibiendo sugiere que el archivo PHP que creó en el directorio de recursos no está siendo cargado automáticamente por Laravel. Para solucionarlo, puede agregar el directorio de recursos a la lista de directorios que Laravel debe cargar automáticamente.

    Para hacer esto, abra su archivo composer.json y agregue lo siguiente a la sección “autoload”:

    "psr-4": {
        "App\\": "app/",
        "Resources\\Fortify\\": "resources/fortify/"
    },
    

    Esto le indica a Laravel que cargue automáticamente cualquier cosa en el directorio resources/fortify/ bajo el espacio de nombres Resources\Fortify.

    Luego ejecute composer dump-autoload en la terminal para regenerar los archivos de carga automática.

    Después de esto, debería poder usar su interfaz modificada haciendo referencia a ella de esta manera:

    use Resources\Fortify\CreatesNewUsers;
    

    Esto debería resolver el error que está recibiendo y permitirle usar su interfaz modificada.

Comments are closed.