如何在laravel中将数据从视图发送到控制器

时间:2019-07-02 23:57:44

标签: laravel view controller

我正在做一个Web应用程序,但是到了无法前进的地步,我不知道该怎么做,我从laravel开始,所以也许解决方法很简单:

public function detalle($id){

    // $nota = App\Nota::find($id);

    //Aquí valida si existe sino redirije al 404
    $producto = App\Producto::findOrFail($id);

    $cantidad = 1;

    return view('productos.detalle', compact('producto','cantidad'));
}

查看:

<div class="card col-6 ">
    <div class="card-body card-buy">
        <h1 class="display-4 ">{{$producto->nombre}}</h1>
        <p class="h3 mt-5">S/ {{$producto->precio}}</p>

        <div class="form-inline">
            <i class="fas fa-credit-card h1 mr-1"></i>
            <p class="mt-2  "> <b>Metodo de pago:</b> A convenir</p>
        </div>

        <div class="form-inline">
            <i class="fab fa-mailchimp ml-2 mr-2 h1"></i>
            <p class="mt-2  "> <b>Envio:</b> Disponible a todo el pais</p>
        </div>

        <div class="form-inline ">
            <div class="mt-n5 mr-2">
                <b>Cantidad:</b>
            </div>

            <div class="def-number-input number-input safari_only">
                <button onclick="this.parentNode.querySelector('input[type=number]').stepDown()" class="minus"></button>
                <input readonly="readonly" class="quantity" min="1" max="{{$producto->stock}}" name="quantity" value="{{$cantidad}}" type="number">
                <button onclick="this.parentNode.querySelector('input[type=number]').stepUp()" class="plus"></button>
            </div>

            <div class="mt-n5 ml-2">
                <b class="text-decoration-none"> ( {{$producto->stock}} disponibles)</b>
            </div>

        </div>

        <a href="{{ route('productos.compra', $producto) }}" class=" align-bottom btn btn-success btn-lg btn-block ">Comprar</a>

    </div>
</div>

https://gyazo.com/febcd4c38cb3ef244e7424a3d92079a4

我已经创建了产品的详细信息视图,并放置了一个按钮供用户选择他想要的产品数量,直到一切正确...

但是我想要那个人选择进入下一个视图的数字,用于确认

https://gyazo.com/f56cf578808e75a0fab25eeffa8d2c5d

但是这些数据{{$ cantidad}}我不知道如何将其传递给这个新视图,我将代码放进去:

控制器:

public function detallescompra($id){
    $producto = App\Producto::findOrFail($id);
    $total = 0;
    $num1 = $producto->precio;
    $num2 = $producto->stock;
    $total = $num1 * $num2;
    return view('productos.compra', compact('producto','total'));
}

并在视图中:

<div class="container">
    <div class="row" id="contenido">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header d-flex justify-content-between align-items-center">
                    <span>Revisa y Confirma</span>
                    <a href="/home" class="btn btn-primary btn-sm">Seguir viendo...</a>
                </div>
                <div class="card-body">
                    @if ( session('mensaje') )
                    <div class="alert alert-success">{{ session('mensaje') }}</div>
                    @endif
                    <form method="POST" action="{{ route ('productos.comprafinal') }}">
                        @csrf

                        <label class="text-gray">Contacto y Envio:</label>
                        <div id="contenido">

                            <input type="name" name="usuario" placeholder="Nombre y Apellido" class="form-control mb-2" required />
                            <input type="email" name="email" placeholder="Email de contacto" class="form-control mb-2" required />
                            <input type="number" name="tlf" placeholder="Numero de telefono" class="form-control mb-2" />

                            <input type="street-address" name="direccion" placeholder="Direccion (Calle - #Casa - Referencia)" class="form-control mb-2" validate required />

                            <input type="text" name="id" placeholder="" class="form-control mb-2 d-none" value="{{$producto->id}}" />

                            <input type="text" name="timestamps" placeholder="" class="form-control mb-2 d-none" value="{{$producto->timestamp}}" />

                            <label class="text-gray">Producto:</label>
                            <input type="text" name="nombre" placeholder="Precio del Producto" class="form-control mb-2" value="{{$producto->nombre}}" readonly="readonly" />

                            <input type="text" name="precio" placeholder="Precio del Producto" class="form-control mb-2" value="Precio por unidad: S/ {{$producto->precio}}" readonly="readonly" id="valor1" />

                            <input type="text" name="cantidad" placeholder="Precio del Producto" class="form-control mb-2" value="Numero de productos: " readonly="readonly" id="valor2" />

                            <input type="text" name="" placeholder="Precio del Producto" class="form-control mb-2" value="Total a pagar: S/ {{$total}}" readonly="readonly" id="total" />

                            <button class="btn btn-success btn-block" type="submit">Comprar</button>
                        </div>

                    </form>

                </div>
            </div>
        </div>
        <div class="col-mod-4">
            <div class="card" style="width: 18rem;">
                <img src="{{$producto->img}}" class="card-img-top" alt="...">

            </div>
        </div>
    </div>

我只需要在我的视图productos.compra中花费{{$ cantidad}},到目前为止,我已经尝试了很多东西,但即使是最低的结果也没有给我

我是新手,我需要帮助:(

1 个答案:

答案 0 :(得分:0)

GG:D

public function detallescompra(Request $request,$id){

            $producto = App\Producto::findOrFail($id);

            $cantidad = $request->input('cantidad');     


            $total = 0;
            $num1 = $producto->precio;
            $num2 = $cantidad;
            $total = $num1 * $num2;



            return view('productos.compra', compact('producto','total','cantidad'));
        }

查看:

<form action="{{ route('productos.compra-confirm', $producto) }}" method="POST"> 
            @csrf
            <div class="form-inline ">
              <div class="mt-n5 mr-2">
              <b>Cantidad:</b>
              </div>

            <div class="def-number-input number-input safari_only">           
            <button type="button" onclick="this.parentNode.querySelector('input[type=number]').stepDown()" class="minus"></button>
            <input readonly="readonly" class="quantity" min="1" max="{{$producto->stock}}" name="cantidad" value="{{$cantidad}}" type="number">
            <button type="button" onclick="this.parentNode.querySelector('input[type=number]').stepUp()" class="plus"></button>
          </div>

          <div class="mt-n5 ml-2">
              <b class="text-decoration-none"> ( {{$producto->stock}} disponibles)</b>
              </div>

            </div>


            <button type="submit"  class=" align-bottom btn btn-success btn-lg btn-block ">Comprar</button>



            </div>
            </div>
        </form>

路由网络:

Route::post('/comprar/{id}', 'HomeController@detallescompra')->name('productos.compra-confirm');