redirectresponse redireccionar php laravel laravel-5 laravel-5.4

php - redireccionar - redirectresponse symfony



Cómo redirigir a una ruta desde un método de controlador (4)

He definido un método en mi controlador, donde primero se recuperan las entradas, y si el campo de correo electrónico está presente en mi base de datos, me gustaría devolver una vista. Sin embargo, si el campo de correo electrónico no está presente, me gustaría redireccionar a otra ruta. También me gustaría pasar las entradas a esa ruta también.

Para entender mejor lo que quiero decir, mi código es el siguiente para mi controlador:

public function index(Request $request) { $credentials = $request->all(); if (/App/User::where(''email'',''='',$credentials[''email''])->exists()){ //if they are registered, return VIEW called welcome, with inputs return view(''welcome'', $credentials); } else{//If the user is not in the database, redirect to ''/profile'' route, //but also send their data return redirect(''profile'', $credentials); }

Y mi web.php es el siguiente:

Route::post(''/profile'', function() { $m = Request::only(''email''); //I only need the email return view(''profile'', $m); });

Sin embargo, esta lógica falla con errores: ''Código de estado HTTP'' 1 ''no está definido''. ¿Hay alguna forma de hacer esto correctamente? (es decir, pasar de mi método de control a otra ruta?)


Mientras que la pregunta de @JithinJose dio la respuesta, la agrego como respuesta para aquellos que consideran esto en el futuro, y que no quiere tratar con cosas como esta en la sesión:

Una forma no recomendada de hacerlo es llamar directamente al controlador desde este método de controlador y pasarle la variable que se necesita:

$request->setMethod(''GET''); //set the Request method $request->merge([''email'' => $email]); //include the request param $this->index($request)); //call the function

Esto estará bien si el otro método de control existe dentro de la misma clase, de lo contrario, solo tiene que obtener el método que necesita y reutilizarlo.

La mejor manera recomendada si desea evitar la sesión es redirigir a la acción del controlador, es decir:

return redirect()->action( ''UserController@index'', [''email'' => $email] );

Espero que sea útil :)


Por favor, cambie su ruta de vista como:

return view(''welcome'', compact(credentials)); return redirect()->route(''profile'')->with(''credentials'',$credentials);


Puede usar el método redirect() .

return redirect()->route(''route.name'')->with([''email''=> ''[email protected]'']);

Como usar with() con redirect() agregará ''email'' a la sesión (no solicitar) . Luego recupera el correo electrónico con:

request()->session()->get(''email'') //Or session(''email'')


Tendrá que definir la ruta a la que desea redirect()

return redirect()->route(''profile'')->with(''credentials'', $credentials);

La opción with parpadea datos a la sesión a la que se puede acceder como si se pasara a la vista directamente.

Puede encontrar más información sobre la session y los datos de actualización aquí .

La información con respecto a los datos de flasheo después de una redirección se puede encontrar aquí .

En tu caso podrías usar:

return redirect()->route(''profile'')->with(''email'', $credentials[''email'']);

En su opinión, podría usarlo como:

@if(session()->has(''email'') We have the email of the user: {{ session(''email'') }} @endif