Laravel 5.1-在我的会话中存储输入数据

迭戈·塞斯佩德斯

我有一个单一产品的show.php视图,当用户单击“添加产品”时,我的控制器CartController.php更新了我的会话购物车并更新了我的cartSession表,现在我尝试输入新数据(颜色输入,大小输入,数量输入),也可以在我的会话中,也可以在我的CartSession表中。但是我不知道为什么它不起作用。

-我认为主要的问题是$ request-> get('input')不会传递给我的CartController.php,我试图返回$ request-> all(),但是没有什么。

CartController.php

namespace dixard\Http\Controllers;

use Illuminate\Http\Request;

use dixard\Http\Requests;
use dixard\Http\Controllers\Controller;

use dixard\Product;
use dixard\CartSession;
use dixard\CartItem;
use dixard\Shipping;
use Session; 

// i think that all classes are ok

public function add(Product $product, CartSession $CartSession,Request $request)
{
    $id = $request->get('id');
    $cart  = \Session::get('cart'); 

    $product->quantity = $request->get('qty');
    $product->size = $request->get('size');
    $product->color = $request->get('color');
    $cart[$product->id] = $product; 

    \Session::put('cart', $cart); 

    return $request->all(); // here i tried to get all inputs but it shows me nothing result
    $subtotal = 0;

    foreach($cart as $producto){
        $subtotal += $producto->quantity * $producto->price;
    }   

    $session_code = Session::getId();
    $CartSession = new CartSession();

    $session_exist = CartSession::where('session_code', $session_code)->orderBy('id', 'desc')->first();

    if (isset($session_exist)) {


            $s = new CartSession;

            $data = array(

            'subtotal' => $subtotal,

            );

            $s->where('session_code', '=', $session_code)->update($data);


    }else {

            $CartSession = new CartSession();
            $CartSession->session_code = $session_code; 
            $CartSession->subtotal = $subtotal; 
            $CartSession->save(); 
    }

    //return $cart;
    //salveremo tutte le informazioni nel array cart nella posizione slug

    foreach($cart as $producto){
        $this->saveCartItem($producto, $CartSession->id, $session_code, $cart);
    }

    return redirect()->route('cart-show');


}

Routes.php

Route::bind('product', function($id) {
     return dixard\Product::where('id', $id)->first();
    });

     Route::get('cart/add/{product}', [

            'as' => 'cart-add',
            'uses' => 'CartController@add'

            ]);

show.php视图

  • 确定有关产品的数据,名称,描述,可用的颜色,价格等。所有信息都传递给我。
{!! Form::open(['route'=> ['cart-add', $product->id],'class'=>'form-horizontal form-label-left'])!!}

                <input type="hidden" name="_method" value="PUT">
                    <input type="hidden" name="id" value="{{$product->id}}">

                        <div class="row">
                            <div class="col-md-4">
                                <div class="form-group">
                                    <label for="p_color">Colore</label>

                                    <select name="color" id="p_size" class="form-control">
                                        @foreach($colors as $color)


                                    <option value="{{ $color->color }}">{{ $color->color }}</option>

                                        @endforeach

                                    </select>

                                </div>
                            </div>

                            <div class="col-md-4">
                                <div class="form-group">
                                    <label for="size">Size</label>
                                    <select name="size" id="p_size" class="form-control">
                                        <option value="XS">XS</option>
                                        <option value="S">S</option>
                                        <option value="M">M</option>
                                        <option value="L">L</option>
                                        <option value="XL">XL</option>
                                    </select>
                                </div>
                            </div>

                            <div class="col-md-3">
                                <div class="form-group">
                                    <label for="qty">Quantity</label>
                                    <select name="qty" id="p_qty" class="form-control">
                                        <option value="">1</option>
                                        <option value="">2</option>
                                        <option value="">3</option>
                                    </select>
                                </div>
                            </div>
                        </div>


                    <div class="product-list-actions">
                        <span class="product-price">
                            <span class="amount">{{$product->price}}</span>



                     <input  type="submit" class="btn btn-lg btn-primary" >
                       ADD PRODUCT
                        </input>
                    </div><!-- /.product-list-actions -->
                    {!! Form::close() !!}

谢谢您的帮助!

斯蒂尔曼

您必须将后方法显式设置为“获取”,或者需要更改路由器以将请求接受为后方法。即使您通过名称调用路由,Form :: open也默认为“ POST”

https://laravelcollective.com/docs/5.2/html#opening-a-form

选项1.变更

Route::get('cart/add/{product}',...

Route::post('cart/add/{product}',...

选项2.变更

{!! Form::open(['route'=> ['cart-add', $product->id],'class'=>'form-horizontal form-label-left'])!!}

{!! Form::open(['method'=>'GET', 'route'=> ['cart-add', $product->id],'class'=>'form-horizontal form-label-left'])!!}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel 5在数据库/ Redis中存储会话

来自分类Dev

laravel 5销毁会话

来自分类Dev

使用Laravel5.1我应在会话文件中存储多少会话数据

来自分类Dev

我该使用哪个提供程序来绑定laravel 5中的数据库存储库?

来自分类Dev

Laravel 不在 Redis 中存储会话数据

来自分类Dev

在数据库列中存储数组-laravel 5

来自分类Dev

验证检查(如果1等于数据库中的某个值)Laravel 5

来自分类Dev

如何在Laravel 5中删除会话

来自分类Dev

Laravel 5数据库会话(Laravel 5.0)

来自分类Dev

Laravel 5中的Flash数据

来自分类Dev

在laravel 5中查询

来自分类Dev

Laravel 5-会话无效

来自分类Dev

Laravel 5 访问会话用户

来自分类Dev

Laravel 5:如何为用户登录会话存储额外的属性

来自分类Dev

Laravel 5存储库注入

来自分类Dev

Laravel 5模板存储目录

来自分类Dev

Laravel 5存储过程错误

来自分类Dev

Laravel 5的存储库模式

来自分类Dev

Laravel 5存储库注入

来自分类Dev

如何在Laravel 5中的视图模板上显示会话数据

来自分类Dev

Controller.php第268行中的1/1 NotFoundHttpException:找不到控制器方法。在laravel 5中

来自分类Dev

会话不在 Vue.js 和 Laravel 中存储数据

来自分类Dev

jQuery / Ajax或PHP会话使用Laravel在DB中输入数据

来自分类Dev

如何在laravel 5中更新数据?

来自分类Dev

在Laravel 5中处理大量数据

来自分类Dev

Laravel在Cookie中存储会话

来自分类Dev

Laravel在会话中存储数组

来自分类Dev

在Laravel 5中跨子域的持久会话

来自分类Dev

Laravel 5中的API异常