No consigo que la función old de laravel 9 me rellene los inputs validados

  • Autor Autor Prop Jason
  • Fecha de inicio Fecha de inicio
Prop Jason

Prop Jason

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Estoy validando una serie de inputs de un formulario pero los campos que si cumplen la validación no los mantiene en el input cuando vuelve a la vista después de hacer la validación, por aquí os dejo el código.

RegisterController
protected function validator(array $data)
{



return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'surnames' => ['required', 'string', 'max:255'],
'mail' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password_register' => ['required', 'string', 'min:8','confirmed'],
'phone'=> ['required','regex:/^([0-9\s\-\+\(\)]*)$/','min:9'],
'location' => 'required|string',
'latitude' => 'numeric',
'longitude' => 'numeric'
]);


}

RegistersUSers ->
public function register(Request $request)
{
// $this->validator($request->all())->validate();

$errors = $this->validator($request->all())->errors();

if ($errors->any()) {
return view('mobileApp.auth.register')->withErrors($errors);
}


event(new Registered($user = $this->create($request->all())));

$this->guard()->login($user);

if ($response = $this->registered($request, $user)) {
return $response;
}

return $request->wantsJson()
? new JsonResponse([], 201)
: redirect($this->redirectPath());
}

Vista del formulario ->
<form method="POST" action="{{ route('register') }}" enctype="multipart/form-data">
@csrf
<div class="col-12">
<div class="mb-2">
<label for="name" class="form-label form-label-login">@lang('translation.Name')</label>
<input id="name" type="text"
class="input form-control @error('name') is-invalid @enderror" name="name"
value="{{ old('name') }}" autocomplete="name" autofocus>
@error('name')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="col-12">
<div class="mb-2">
<label for="surnames" class="form-label form-label-login">@lang('translation.Surnames')</label>
<input id="surnames" type="text"
class="input form-control @error('surnames') is-invalid @enderror" name="surnames"
value="{{ old('surnames') }}" autocomplete="surnames">
@error('surnames')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="col-12">
<div class="mb-2">
<label for="mail" class="form-label form-label-login">@lang('translation.Email')</label>
<input id="mail" type="email"
class="input form-control @error('mail') is-invalid @enderror" name="mail"
value="{{ old('mail') }}" autocomplete="mail">
@error('mail')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>

<div class="col-12">
<div class="mb-2">
<label for="phone" class="form-label form-label-login">@lang('translation.Phone')</label>
<input id="phone" type="text"
class="input form-control @error('phone') is-invalid @enderror" name="phone"
value="{{ old('phone') }}" autocomplete="phone">
@error('phone')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>

<div class="col-12">
<div class="mb-2">
<label for="avatar" class="form-label form-label-login">@lang('translation.Photo')</label>
<input id="avatar" type="file" accept="image/png, image/gif, image/jpeg"
class="input form-control" name="avatar"
autocomplete="avatar">
</div>
</div>

<div class="col-12">
<div class="mb-2">
<label for="location" class="form-label form-label-login">@lang('translation.Location')</label>
<label id="location-msg" class="form-label text-danger" >* @lang('translation.InsertValidLocation')</label>
<input type="text" name="location" id="autocomplete" class="input form-control form-control--location @error('location') is-invalid @enderror" value="{{ old('location') }}" >
@error('location')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<input type="text" name="latitude" id="latitude" class="input form-control" value="{{ old('latitude') }}" hidden >
<input type="text" name="longitude" id="longitude" class="input form-control" value="{{ old('longitude') }}" hidden >
</div>
</div>

<div class="col-12">
<div class="mb-2">
<label for="password" class="form-label form-label-login">@lang('translation.Password')</label>
<input id="password" type="password"
class="input form-control @error('password_register') is-invalid @enderror" name="password_register"
autocomplete="new-password">
@error('password_register')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="col-12">
<div class="mb-2">
<label for="password-confirm" class="form-label form-label-login">@lang('translation.ConfirmPassword')</label>
<input id="password-confirm" type="password" class="input form-control"
name="password_confirmation" autocomplete="new-password">
</div>
</div>
<div class="col-12 mb-2">
<button type="submit" class="button button--big">@lang('translation.Register')</button>
</div>
</form>

Rutas a los controladores en AuthRouteMethod ->
// Registration Routes...
if ($options['register'] ?? true) {
$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');
}

La cuestión es que no se porque no recupera el dato correcto una vez esta validado no se si me falta algún detalle, todos mis campos se quedan en blanco aun que cumplan la validación, los errores los controlo bien y se muestran pero si solo tienes un campo mal todo el formulario se elimina y te salta el error del campo erróneo pero claro tienes que volver a escribir todo el form de nuevo y es una mala praxis.
 
El problema que estás sufriendo es que no estás utilizando correctamente la función withInput que se encarga de almacenar los datos enviados por el usuario en la sesión, de forma que estos puedan ser recuperados tras una validación fallida.

Para solucionarlo, debes modificar la forma en que retornas la vista cuando hay errores de validación. En lugar del método withErrors, utiliza el método withInput() que guarda en la sesión los datos enviados por el usuario. Aquí te muestro cómo:

PHP:
if ($errors->any()) {
    return view('mobileApp.auth.register')->withInput($request->all())->withErrors($errors);
}

Con este cambio, el método old ya debería ser capaz de recuperar los valores enviados por el usuario.
 
El problema que estás sufriendo es que no estás utilizando correctamente la función withInput que se encarga de almacenar los datos enviados por el usuario en la sesión, de forma que estos puedan ser recuperados tras una validación fallida.

Para solucionarlo, debes modificar la forma en que retornas la vista cuando hay errores de validación. En lugar del método withErrors, utiliza el método withInput() que guarda en la sesión los datos enviados por el usuario. Aquí te muestro cómo:

PHP:
if ($errors->any()) {
    return view('mobileApp.auth.register')->withInput($request->all())->withErrors($errors);
}

Con este cambio, el método old ya debería ser capaz de recuperar los valores enviados por el usuario.
Pues no sigue sin funcionar y ya me estoy volviendo loco jajaja
 
Pues no sigue sin funcionar y ya me estoy volviendo loco jajaja
Vaya, lamento escuchar eso. Otro posible problema podría estar en la configuración de tu sesión. Si tu driver de sesión no está correctamente configurado o no está funcionando correctamente, eso podría impedir que funcionen las funciones old() y withInput().

Comprueba en tu archivo .env o en config/session.php que todo esté correctamente. Es posible que desees probar cambiando tu driver de sesión a file para descartar problemas con tu driver actual.

Si el problema persiste, te recomendaría poner un dump en la request justo antes de que la validación ocurra para asegurarte de que los datos están siendo enviados. Si los datos están allí pero old() sigue sin funcionar, entonces el problema está muy probablemente en la sesión.
 
Vaya, lamento escuchar eso. Otro posible problema podría estar en la configuración de tu sesión. Si tu driver de sesión no está correctamente configurado o no está funcionando correctamente, eso podría impedir que funcionen las funciones old() y withInput().

Comprueba en tu archivo .env o en config/session.php que todo esté correctamente. Es posible que desees probar cambiando tu driver de sesión a file para descartar problemas con tu driver actual.

Si el problema persiste, te recomendaría poner un dump en la request justo antes de que la validación ocurra para asegurarte de que los datos están siendo enviados. Si los datos están allí pero old() sigue sin funcionar, entonces el problema está muy probablemente en la sesión.
PHP:
public function register(Request $request)
    {
        // $this->validator($request->all())->validate();
        $errors = $this->validator($request->all())->errors();
        
        if ($errors->any()) {
            return view('mobileApp.auth.register')->withInput($request->all())->withErrors($errors);
        }

        event(new Registered($user = $this->create($request->all())));
        $this->guard()->login($user);
        if ($response = $this->registered($request, $user)) {
            return $response;
        }
        return $request->wantsJson()
            ? new JsonResponse([], 201)
            : redirect($this->redirectPath());
    }
}

Te refieres aqui poner el var_dump()?
 
PHP:
public function register(Request $request)
    {
        // $this->validator($request->all())->validate();
        $errors = $this->validator($request->all())->errors();
        
        if ($errors->any()) {
            return view('mobileApp.auth.register')->withInput($request->all())->withErrors($errors);
        }

        event(new Registered($user = $this->create($request->all())));
        $this->guard()->login($user);
        if ($response = $this->registered($request, $user)) {
            return $response;
        }
        return $request->wantsJson()
            ? new JsonResponse([], 201)
            : redirect($this->redirectPath());
    }
}

Te refieres aqui poner el var_dump()?
Sí, eso es correcto. Puedes poner un var_dump($request->all()); justo en la línea antes de validar para comprobar si todos los datos ingresados están presentes en la petición. Recuerda que necesitarás una llamada a die() después para detener la ejecución y poder ver los resultados de var_dump. Sería algo como esto:

PHP:
public function register(Request $request)
{
    var_dump($request->all());
    die();
    // ... rest of the function
}

Después de hacer esto, intenta enviar el formulario otra vez y revisa los resultados. Si todo está correcto, deberías ver un array con todos los datos que has enviado desde tu formulario. Si ciertos datos no están presentes, podría ser un problema con el formulario mismo.
 
Sí, eso es correcto. Puedes poner un var_dump($request->all()); justo en la línea antes de validar para comprobar si todos los datos ingresados están presentes en la petición. Recuerda que necesitarás una llamada a die() después para detener la ejecución y poder ver los resultados de var_dump. Sería algo como esto:

PHP:
public function register(Request $request)
{
    var_dump($request->all());
    die();
    // ... rest of the function
}

Después de hacer esto, intenta enviar el formulario otra vez y revisa los resultados. Si todo está correcto, deberías ver un array con todos los datos que has enviado desde tu formulario. Si ciertos datos no están presentes, podría ser un problema con el formulario mismo.

Efectivamente estan los datos, en este caso solo el name que es el campo que he rellenado ->
array(10) { ["_token"]=> string(40) "WZxFuEjnJIeEH4ItVHuFyOghjyk6dOUTY9XdrOaK" ["name"]=> string(4) "pepe" ["surnames"]=> NULL ["mail"]=> NULL ["phone"]=> NULL ["location"]=> NULL ["latitude"]=> NULL ["longitude"]=> NULL ["password_register"]=> NULL ["password_confirmation"]=> NULL }
 
Efectivamente estan los datos, en este caso solo el name que es el campo que he rellenado ->
array(10) { ["_token"]=> string(40) "WZxFuEjnJIeEH4ItVHuFyOghjyk6dOUTY9XdrOaK" ["name"]=> string(4) "pepe" ["surnames"]=> NULL ["mail"]=> NULL ["phone"]=> NULL ["location"]=> NULL ["latitude"]=> NULL ["longitude"]=> NULL ["password_register"]=> NULL ["password_confirmation"]=> NULL }
Si los datos se están enviando correctamente, entonces parece que el problema puede estar en la configuración de la sesión de Laravel, ya que las funciones old() y withInput() dependen de la sesión para funcionar correctamente.

Asegúrate de que estás utilizando la configuración correcta para la sesión en tu archivo .env y config/session.php.

Por ejemplo, si estás utilizando el controlador de sesión de archivo, la configuración de .env debe ser algo como lo siguiente:
Insertar CODE, HTML o PHP:
SESSION_DRIVER=file
SESSION_LIFETIME=120
Y tu configuración en el archivo config/session.php:
PHP:
return [
    'driver' => env('SESSION_DRIVER', 'file'),
    //... Otras configuraciones
];
Además, intenta borrar la caché la configuración de tu archivo con:
Insertar CODE, HTML o PHP:
php artisan config:clear
Entre tanto, te sugiero que busques errores en los logs de Laravel. Podrías también postear el contenido de config/session.php para verificar que todo esté en orden.
 
Si los datos se están enviando correctamente, entonces parece que el problema puede estar en la configuración de la sesión de Laravel, ya que las funciones old() y withInput() dependen de la sesión para funcionar correctamente.

Asegúrate de que estás utilizando la configuración correcta para la sesión en tu archivo .env y config/session.php.

Por ejemplo, si estás utilizando el controlador de sesión de archivo, la configuración de .env debe ser algo como lo siguiente:
Insertar CODE, HTML o PHP:
SESSION_DRIVER=file
SESSION_LIFETIME=120
Y tu configuración en el archivo config/session.php:
PHP:
return [
    'driver' => env('SESSION_DRIVER', 'file'),
    //... Otras configuraciones
];
Además, intenta borrar la caché la configuración de tu archivo con:
Insertar CODE, HTML o PHP:
php artisan config:clear
Entre tanto, te sugiero que busques errores en los logs de Laravel. Podrías también postear el contenido de config/session.php para verificar que todo esté en orden.
Mi .env contiene esos drivers ->
SESSION_DRIVER=file
SESSION_LIFETIME=120

Session.php ->

PHP:
<?php

use Illuminate\Support\Str;

return [

    /*
    |--------------------------------------------------------------------------
    | Default Session Driver
    |--------------------------------------------------------------------------
    |
    | This option controls the default session "driver" that will be used on
    | requests. By default, we will use the lightweight native driver but
    | you may specify any of the other wonderful drivers provided here.
    |
    | Supported: "file", "cookie", "database", "apc",
    |            "memcached", "redis", "dynamodb", "array"
    |
    */

    'driver' => env('SESSION_DRIVER', 'file'),

    /*
    |--------------------------------------------------------------------------
    | Session Lifetime
    |--------------------------------------------------------------------------
    |
    | Here you may specify the number of minutes that you wish the session
    | to be allowed to remain idle before it expires. If you want them
    | to immediately expire on the browser closing, set that option.
    |
    */

    'lifetime' => env('SESSION_LIFETIME', 120),

    'expire_on_close' => false,

    /*
    |--------------------------------------------------------------------------
    | Session Encryption
    |--------------------------------------------------------------------------
    |
    | This option allows you to easily specify that all of your session data
    | should be encrypted before it is stored. All encryption will be run
    | automatically by Laravel and you can use the Session like normal.
    |
    */

    'encrypt' => false,

    /*
    |--------------------------------------------------------------------------
    | Session File Location
    |--------------------------------------------------------------------------
    |
    | When using the native session driver, we need a location where session
    | files may be stored. A default has been set for you but a different
    | location may be specified. This is only needed for file sessions.
    |
    */

    'files' => storage_path('framework/sessions'),

    /*
    |--------------------------------------------------------------------------
    | Session Database Connection
    |--------------------------------------------------------------------------
    |
    | When using the "database" or "redis" session drivers, you may specify a
    | connection that should be used to manage these sessions. This should
    | correspond to a connection in your database configuration options.
    |
    */

    'connection' => env('SESSION_CONNECTION', null),

    /*
    |--------------------------------------------------------------------------
    | Session Database Table
    |--------------------------------------------------------------------------
    |
    | When using the "database" session driver, you may specify the table we
    | should use to manage the sessions. Of course, a sensible default is
    | provided for you; however, you are free to change this as needed.
    |
    */

    'table' => 'sessions',

    /*
    |--------------------------------------------------------------------------
    | Session Cache Store
    |--------------------------------------------------------------------------
    |
    | While using one of the framework's cache driven session backends you may
    | list a cache store that should be used for these sessions. This value
    | must match with one of the application's configured cache "stores".
    |
    | Affects: "apc", "dynamodb", "memcached", "redis"
    |
    */

    'store' => env('SESSION_STORE', null),

    /*
    |--------------------------------------------------------------------------
    | Session Sweeping Lottery
    |--------------------------------------------------------------------------
    |
    | Some session drivers must manually sweep their storage location to get
    | rid of old sessions from storage. Here are the chances that it will
    | happen on a given request. By default, the odds are 2 out of 100.
    |
    */

    'lottery' => [2, 100],

    /*
    |--------------------------------------------------------------------------
    | Session Cookie Name
    |--------------------------------------------------------------------------
    |
    | Here you may change the name of the cookie used to identify a session
    | instance by ID. The name specified here will get used every time a
    | new session cookie is created by the framework for every driver.
    |
    */

    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),
    


    /*
    |--------------------------------------------------------------------------
    | Session Cookie Path
    |--------------------------------------------------------------------------
    |
    | The session cookie path determines the path for which the cookie will
    | be regarded as available. Typically, this will be the root path of
    | your application but you are free to change this when necessary.
    |
    */

    'path' => '/',

    /*
    |--------------------------------------------------------------------------
    | Session Cookie Domain
    |--------------------------------------------------------------------------
    |
    | Here you may change the domain of the cookie used to identify a session
    | in your application. This will determine which domains the cookie is
    | available to in your application. A sensible default has been set.
    |
    */

    'domain' => env('SESSION_DOMAIN', null),

    /*
    |--------------------------------------------------------------------------
    | HTTPS Only Cookies
    |--------------------------------------------------------------------------
    |
    | By setting this option to true, session cookies will only be sent back
    | to the server if the browser has a HTTPS connection. This will keep
    | the cookie from being sent to you when it can't be done securely.
    |
    */

    'secure' => env('SESSION_SECURE_COOKIE'),

    /*
    |--------------------------------------------------------------------------
    | HTTP Access Only
    |--------------------------------------------------------------------------
    |
    | Setting this value to true will prevent JavaScript from accessing the
    | value of the cookie and the cookie will only be accessible through
    | the HTTP protocol. You are free to modify this option if needed.
    |
    */

    'http_only' => true,

    /*
    |--------------------------------------------------------------------------
    | Same-Site Cookies
    |--------------------------------------------------------------------------
    |
    | This option determines how your cookies behave when cross-site requests
    | take place, and can be used to mitigate CSRF attacks. By default, we
    | will set this value to "lax" since this is a secure default value.
    |
    | Supported: "lax", "strict", "none", null
    |
    */

    'same_site' => 'lax',

];
 
Mi .env contiene esos drivers ->
SESSION_DRIVER=file
SESSION_LIFETIME=120

Session.php ->

PHP:
<?php

use Illuminate\Support\Str;

return [

    /*
    |--------------------------------------------------------------------------
    | Default Session Driver
    |--------------------------------------------------------------------------
    |
    | This option controls the default session "driver" that will be used on
    | requests. By default, we will use the lightweight native driver but
    | you may specify any of the other wonderful drivers provided here.
    |
    | Supported: "file", "cookie", "database", "apc",
    |            "memcached", "redis", "dynamodb", "array"
    |
    */

    'driver' => env('SESSION_DRIVER', 'file'),

    /*
    |--------------------------------------------------------------------------
    | Session Lifetime
    |--------------------------------------------------------------------------
    |
    | Here you may specify the number of minutes that you wish the session
    | to be allowed to remain idle before it expires. If you want them
    | to immediately expire on the browser closing, set that option.
    |
    */

    'lifetime' => env('SESSION_LIFETIME', 120),

    'expire_on_close' => false,

    /*
    |--------------------------------------------------------------------------
    | Session Encryption
    |--------------------------------------------------------------------------
    |
    | This option allows you to easily specify that all of your session data
    | should be encrypted before it is stored. All encryption will be run
    | automatically by Laravel and you can use the Session like normal.
    |
    */

    'encrypt' => false,

    /*
    |--------------------------------------------------------------------------
    | Session File Location
    |--------------------------------------------------------------------------
    |
    | When using the native session driver, we need a location where session
    | files may be stored. A default has been set for you but a different
    | location may be specified. This is only needed for file sessions.
    |
    */

    'files' => storage_path('framework/sessions'),

    /*
    |--------------------------------------------------------------------------
    | Session Database Connection
    |--------------------------------------------------------------------------
    |
    | When using the "database" or "redis" session drivers, you may specify a
    | connection that should be used to manage these sessions. This should
    | correspond to a connection in your database configuration options.
    |
    */

    'connection' => env('SESSION_CONNECTION', null),

    /*
    |--------------------------------------------------------------------------
    | Session Database Table
    |--------------------------------------------------------------------------
    |
    | When using the "database" session driver, you may specify the table we
    | should use to manage the sessions. Of course, a sensible default is
    | provided for you; however, you are free to change this as needed.
    |
    */

    'table' => 'sessions',

    /*
    |--------------------------------------------------------------------------
    | Session Cache Store
    |--------------------------------------------------------------------------
    |
    | While using one of the framework's cache driven session backends you may
    | list a cache store that should be used for these sessions. This value
    | must match with one of the application's configured cache "stores".
    |
    | Affects: "apc", "dynamodb", "memcached", "redis"
    |
    */

    'store' => env('SESSION_STORE', null),

    /*
    |--------------------------------------------------------------------------
    | Session Sweeping Lottery
    |--------------------------------------------------------------------------
    |
    | Some session drivers must manually sweep their storage location to get
    | rid of old sessions from storage. Here are the chances that it will
    | happen on a given request. By default, the odds are 2 out of 100.
    |
    */

    'lottery' => [2, 100],

    /*
    |--------------------------------------------------------------------------
    | Session Cookie Name
    |--------------------------------------------------------------------------
    |
    | Here you may change the name of the cookie used to identify a session
    | instance by ID. The name specified here will get used every time a
    | new session cookie is created by the framework for every driver.
    |
    */

    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),
    


    /*
    |--------------------------------------------------------------------------
    | Session Cookie Path
    |--------------------------------------------------------------------------
    |
    | The session cookie path determines the path for which the cookie will
    | be regarded as available. Typically, this will be the root path of
    | your application but you are free to change this when necessary.
    |
    */

    'path' => '/',

    /*
    |--------------------------------------------------------------------------
    | Session Cookie Domain
    |--------------------------------------------------------------------------
    |
    | Here you may change the domain of the cookie used to identify a session
    | in your application. This will determine which domains the cookie is
    | available to in your application. A sensible default has been set.
    |
    */

    'domain' => env('SESSION_DOMAIN', null),

    /*
    |--------------------------------------------------------------------------
    | HTTPS Only Cookies
    |--------------------------------------------------------------------------
    |
    | By setting this option to true, session cookies will only be sent back
    | to the server if the browser has a HTTPS connection. This will keep
    | the cookie from being sent to you when it can't be done securely.
    |
    */

    'secure' => env('SESSION_SECURE_COOKIE'),

    /*
    |--------------------------------------------------------------------------
    | HTTP Access Only
    |--------------------------------------------------------------------------
    |
    | Setting this value to true will prevent JavaScript from accessing the
    | value of the cookie and the cookie will only be accessible through
    | the HTTP protocol. You are free to modify this option if needed.
    |
    */

    'http_only' => true,

    /*
    |--------------------------------------------------------------------------
    | Same-Site Cookies
    |--------------------------------------------------------------------------
    |
    | This option determines how your cookies behave when cross-site requests
    | take place, and can be used to mitigate CSRF attacks. By default, we
    | will set this value to "lax" since this is a secure default value.
    |
    | Supported: "lax", "strict", "none", null
    |
    */

    'same_site' => 'lax',

];
Tu configuración parece normal a primera vista. Intentemos eliminar las sesiones que haya almacenadas para luego recargar tu aplicación Laravel. Podemos hacerlo utilizando la línea de comando de Artisan que viene con Laravel. En tu terminal, navega hasta la raíz de tu proyecto Laravel y ejecuta este comando:

Insertar CODE, HTML o PHP:
php artisan session:clear

Este comando eliminará todas las sesiones almacenadas. Luego recarga tu aplicación y prueba si puede mantener el estado de los formularios después de una redirección con error de validación.

Si el problema persiste, podría ser útil revisar el almacenamiento de tus sesiones. Para el driver 'file', por defecto Laravel guarda las sesiones en storage/framework/sessions. Asegúrate de que esta carpeta existe y es accesible por Laravel.

Además, también es recomendable observar tus logs en storage/logs/laravel.log para ver si hay algún error, así como asegurarte de que tu servidor está configurado para trabajar correctamente con las sesiones de PHP. Aunque es menos común, esto también podría ser la raíz del problema.
 
Tu configuración parece normal a primera vista. Intentemos eliminar las sesiones que haya almacenadas para luego recargar tu aplicación Laravel. Podemos hacerlo utilizando la línea de comando de Artisan que viene con Laravel. En tu terminal, navega hasta la raíz de tu proyecto Laravel y ejecuta este comando:

Insertar CODE, HTML o PHP:
php artisan session:clear

Este comando eliminará todas las sesiones almacenadas. Luego recarga tu aplicación y prueba si puede mantener el estado de los formularios después de una redirección con error de validación.

Si el problema persiste, podría ser útil revisar el almacenamiento de tus sesiones. Para el driver 'file', por defecto Laravel guarda las sesiones en storage/framework/sessions. Asegúrate de que esta carpeta existe y es accesible por Laravel.

Además, también es recomendable observar tus logs en storage/logs/laravel.log para ver si hay algún error, así como asegurarte de que tu servidor está configurado para trabajar correctamente con las sesiones de PHP. Aunque es menos común, esto también podría ser la raíz del problema.
La cuestion que ahora mismo es un formulario para registrar un nuevo usuario no hay sesion
 
La cuestion que ahora mismo es un formulario para registrar un nuevo usuario no hay sesion
A pesar de que no haya una sesión de usuario iniciada, Laravel utiliza sesiones para mantener ciertos datos entre las peticiones, incluyendo los datos antiguos del formulario y los mensajes de error de validación.

La función withInput() guarda los datos del formulario en la sesión para que pueda ser recuperada en la próxima petición con la función old().

Si este comportamiento no está funcionando como debería, podría ser debido a un problema con la configuración de las sesiones de Laravel o un problema con el servidor.

Por lo tanto, aunque no se haya abierto ninguna sesión explícita de usuario, Laravel todavía utiliza su propio mecanismo de sesiones internamente.
 
Pues la verdad que no tengo ni idea ya he buscado por todos lados etc y no encuentro una solución
 
No he leido todo lo que te dice el BOT, pero esos valores que no ves después de validar, son datos que se guardan en la session.
hazle un dd() a los valores de la session y mira si los mantiene o no. Ahi puedes dar con el problema.

O mejor aun, instala y usa debugbar.
 
No he leido todo lo que te dice el BOT, pero esos valores que no ves después de validar, son datos que se guardan en la session.
hazle un dd() a los valores de la session y mira si los mantiene o no. Ahi puedes dar con el problema.

O mejor aun, instala y usa debugbar.
Por lo que veo no se me están guardando en la sesión, como puedo solucionarlo?
 
Por lo que veo no se me están guardando en la sesión, como puedo solucionarlo?
ve y busca en stackoverflow pero busca en inglés no sirve de nada buscar respuestas relativas a programación en español.

El peor lugar para pedir ayuda creo que es aquí ya que no es un lugar dedicado a programadores.
 
ve y busca en stackoverflow pero busca en inglés no sirve de nada buscar respuestas relativas a programación en español.

El peor lugar para pedir ayuda creo que es aquí ya que no es un lugar dedicado a programadores.
Gracias por la ayuda, ya lo solucione 😉
 
Mira es importante cuando hacemos la validación manual (Con el Validator::make) ->
PHP:
$validator = Validator::make($request->all(), [
            'name' => ['required', 'string', 'max:255'],
            'surnames' => ['required', 'string', 'max:255'],
            'mail' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password_register' => ['required', 'string', 'min:8'],
            'password_confirmation' => ['required','same:password_register'],
            'phone'=> ['required','regex:/^([0-9\s\-\+\(\)]*)$/','min:9'],
            'location' => 'required|string',
            'latitude' => 'numeric',
            'longitude' => 'numeric'
        ]);

        if ($validator->fails()) {
            
            return redirect('register')->withErrors($validator)->withInput();
        }

Que sea un "redirect('ruta_destino')" o un "redirect()->route('ruta_destino')" acompañado de = "->withErrors($validator) ->withInputs()" de esta manera los input que contengan el value="{{ old('nombre_input') }}" mantendrán al valor que ha pasado la validación correctamente.
Si tienes alguna duda consultame.
 
Atrás
Arriba