update formrequest float example crear array php validation laravel

php - formrequest - laravel validation regex



Registro Multi Paso en Laravel 5.1 (2)

Es porque su redirección le está diciendo al navegador que haga una solicitud GET en el register?step=2 URL. Y en su método getRegister no verifica el valor del step (por lo tanto, ve la misma forma que para el step=1 GET step=1 ).

Veo dos soluciones posibles:

  • o bien, modifica su redirección para que realice una solicitud POST al step=2 (puede ser complicado)
  • o sirves una página diferente para la solicitud GET al step=2

Te aconsejaría para la segunda opción:

  • La forma en el step=1 debe hacer una POST al step=1 , que debe redirigirse a un step=2 GET step=2 si todo está bien (usando una cookie flash para pasar las variables)
  • La forma en el step=2 debe hacer una POST al step=2 , que debe redirigirse a un step=3 GET step=3 si todo está bien (usando una cookie flash para pasar las variables)

Estoy tratando de construir el formulario de registro de varios pasos.

Tengo una ruta /register

Paso 1 Estoy publicando este formulario para el paso 2

route(''register'', [''step'' => 1])

Paso 2

Y obtengo datos del paso 1 y los coloco en entradas ocultas. Y publicar en el tercer paso para finalizar el registro. Si tiene éxito no hay problema. ¿Pero qué pasó si falla el registro?

route(''register'', [''step'' => 2])

Paso 3

route(''register'', [''step'' => 3])

Si el registro falla, estoy redirigiendo al usuario al paso 2.

Aquí está mi código de redireccionamiento.

$new_user = $request->all(); $validator = Validator::make($new_user, $this->rules()); if ($validator->fails()) { return redirect()->back() ->withInput($new_user) ->withErrors($validator->getMessageBag()->toArray()); } else { // }

Si la validación falla, estoy redirigiendo a step2 todo ok. Pero estoy viendo formas en la imagen (Paso 1) Pero mi uri es / registrar? Paso = 2

Cuál es el problema. ¿Dónde estoy cometiendo un error?

ACTUALIZACIÓN: (Definiciones de ruta)

Route::get(''/register'', [ ''uses'' => ''Auth/AuthController@getRegister'', ''as'' => ''register'', ''middleware'' => [''guest''], ]); Route::post(''/register'', [ ''uses'' => ''Auth/AuthController@postRegister'', ''middleware'' => [''guest''], ]);

ACTUALIZACIÓN 2: (getRegister y postRegister)

Nota: No terminé de codificar getRegister y postRegister.

obtenerRegistrarse

public function getRegister(Request $request) { if(!$request->has(''step'')) { /** * Eğer kayıt ekranında ?step=1,2 vs. yoksa direk ?step=1 e yönlendirme yapıyoruz. */ return redirect()->route(''register'', [''step'' => 1]); } $countries = (new LocationCountry)->getAllCountries()->toArray(); foreach($countries as $key => $country) { $countryNames[$key] = $countries[$key][''translation''] = trans(''country.''.$country[''code'']); } array_multisort($countryNames, SORT_STRING, $countries); /** * Ülke ve Zaman Dilimi için Varsayılan Seçimi */ $default = new /stdClass(); $default->country = (Lang::locale() == ''tr'') ? ''TR'' : ''US''; $default->timezone = (Lang::locale() == ''tr'') ? ''Europe/Istanbul'' : ''America/New_York''; $timezones = (new DateController)->getTimeZoneList(); return view(''auth.register.index'', compact([''timezones'', ''countries'', ''default''])) ->with(''orderProcess'', TRUE); }

registro posterior

public function postRegister(Request $request){ if(!$request->has(''step'')) { /** * Eğer kayıt ekranında ?step=1,2 vs. yoksa direk ?step=1 e yönlendirme yapıyoruz. */ return redirect()->route(''register'', [''step'' => 1]); } if ($request->get(''step'') == 2) { $new_user = $request->all(); $new_user[''tc_citizen''] = (!isset($new_user[''tc_citizen''])) ? 0 : 1; $new_user[''area_code''] = (new LocationCountry)->getCountryAreaCodeByCode($new_user[''country'']); $cities = (new Location)->getCities(); /** * Eğer Post Durumunda ise ve town değişkeni varsa... */ if($request->has(''town'')) { $towns = (new Location)->getTowns($request->get(''city'')); if(!$towns->isEmpty()) { } } return view(''auth.register.step2'', compact([''new_user'', ''cities''])) ->with(''orderProcess'', TRUE); } if($request->get(''step'') == 3) { /** * Kayıt Sonuç Sayfası */ $new_user = $request->all(); $validator = Validator::make($new_user, $this->rules()); if ($validator->fails()) { return redirect()->back() ->withInput($new_user) ->withErrors($validator->getMessageBag()->toArray()); } else { } } }


Tal vez puedas probar esto

return redirect()->back() ->withInput(array_merge($new_user, [''step'', $step-1])) ->withErrors($validator->getMessageBag()->toArray());

Espero que te funcione bien.