Stack Overflow en español Asked by Kn4 on November 20, 2021
Estoy comenzando a utilizar Laravel y aún no entiendo bien como imprimir en una vista los resultados que son retornados desde un controlador (el cual ejecuta un cálculo de dos variables y una constante).
El algoritmo consiste en enviar desde la vista calcular.blade.php
los datos através de un formulario al controlador calculoController
cuya función es calcularEntradas
dónde se calculará dependiendo el caso las variables recibidas, al obtener el resultado las variables se imprimirán en la misma vista cacular.blade.php
Controlador: calculoController.php:
namespace AppHttpControllers;
use IlluminateHttpRequest;
class calculoController extends Controller
{
public function calcularEntradas(Request $request)
{
$valor1 = $request->input("entrada1");
$valor2 = $request->input("entrada2");
$tipo = $request->input("tipo_entrada");
switch ($tipo) {
case "Calculo1":
$resultado = $valor1 * 0.05 + $valor2;
$tipo;
break;
case "Calculo2":
$resultado = $valor1 * 0.085 + $valor2;
$tipo;
break;
case "Calculo3":
$resultado = $valor1 * 0.0986 + $valor2;
$tipo;
break;
case "Calculo4":
$resultado = $valor1 * 0.135 + $valor2;
$tipo;
break;
default:
echo "";
}
return view('cacular', ['tipo' => $tipo, 'resultado' => $resultado']);
}
}
Vista: views/calcular.blade.php
<form action="{{route('enviar_datos')}}" method="POST" autocomplete="off" >
@csrf
<input type="radio" name="tipo_entrada" value="Calculo1" required>
<input type="radio" name="tipo_entrada" value="Calculo2" required>
<input type="radio" name="tipo_entrada" value="Calculo3" required>
<input type="radio" name="tipo_entrada" value="Calculo4" required>
<input type="number" name="valor1" placeholder="Valor 1" required>
<input type="number" name="valor2" placeholder="Valor 2" required>
<button> Calcular </button>
</form>
<div class="label">
El tipo de cálculo es: {{ $tipo }}
El resultado es: {{ $resultado }}
</div>
Ruta: routes/web.php
use IlluminateSupportFacadesRoute;
Route::get('/calculo', function () {
return view('calcular');
});
Route::post('/calculo', 'calculoController@calcularEntradas')->name('enviar_datos');
No tengo muy claro como enviar los datos al controlador, imprimir el resultado a la vista desde el controlador y estructurar las rutas en Laravel.
Versión de PHP: 7.4
Versión de Laravel: 7
Plataforma: Heroku
Error obtenido:
Undefined variable:
$resultado
y$tipo
Suponiendo que tu error sea por esto:
Deberías poner Request
en el controlador
public function calcularEntradas(Request $request){}
y para retornar las variables a la vista normalmente yo las envio asi:
return view(calcular , [ 'variable1' => $tipo , 'variable2' =>$resultado ]);
luego en tu web.php
Route::post('/calculo', 'calculoController@calcularEntradas')->name('enviar_datos')
El name
se usa para evitar usar toda la linea que ingresas en el route
, y las puedes utilizar tanto en las vistas como en los controladores(esto es opcional)
en tu caso seria (si la implementas):
<form action="{{route('enviar_datos')}}" method="POST">.......</form>
En la vista lo utilizar asi:
<span>el resultado es: {{$variable1}}</span>
o si quieres puedes cambiar el identificador variable1
por:
return view(calcular , [ 'tipo' => $tipo , 'resultado' =>$resultado ]);
y el resultado seria lo mismo:
<span>el resultado es: {{$tipo}}</span>
Answered by DAD on November 20, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP