美文网首页
Laravel Basic - 4 - 加入更多页面以及auth

Laravel Basic - 4 - 加入更多页面以及auth

作者: 芒鞋儿 | 来源:发表于2021-02-11 01:21 被阅读0次
    1. Button 以及页面跳转设置
      要在"add to Cart" button 上设置click后页面跳转并传data
    • 在allproducts.blade.php的add to Cart 下设置如下:
    <a href="{{route('AddToCartProduct',['id'=>$product->id])}}" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</a>
    
    • Route设置如下:
    Route::get('products/addToCart/{id}',['uses'=>'ProductsController@addProductToCart','as'=>'AddToCartProduct']);
    

    设置格式:Route::get('<相对URI+id>',['uses'=>'<controller name>@<function name>','as'=>'<identified name in view php file>']);

    • 添加Cart model:
    
    Class Cart extends Model {
    
       public $items; // ['id'=>,'quantity'=>,'data'=>$product]
       public $totalQuantity;
       public $totalPrice;
    
       public function __construct($prevCart) 
       {
           if($prevCart != null){
               $this->items = $prevCart->items;
               $this->totalQuantity = $prevCart->totalQuantity;
               $this->totalPrice = $prevCart->totalPrice;
           }else{
               $this->items = [];
               $this->totalQuantity = 0;
               $this->totalPrice = 0;
           }
       }
    
       public function addItem($id, $product) 
       {
           $price = (int) str_replace("$","",$product->price);
           if(array_key_exists($id,$this->items)){
               $productToAdd = $this->items[$id];
               $productToAdd['quantity']++;
           }else {
               $productToAdd = ['quantity'=>1, 'price'=> $price, 'data'=>$product];
           }
    
           $this->items[$id] = $productToAdd;
           $this->totalQuantity++;
           $this->totalPrice = $this->totalPrice + $price;
       }
    }
    

    此处可以看到model 层可以做很多处理,model 层的数据是内存的数据,stateless 的,而DB所储存的是stateful的数据。model 层的作用是在展示到页面或者保存到DB中对数据做一些处理。

    • 在controller中加入对应的function
        public function addProductToCart(Request $req,$id) 
        {
            $prevCart = $req->session()->get('cart');
            $cart = new Cart($prevCart);
            $product = Product::find($id);
            $cart->addItem($id,$product);
    
            $req->session()->put('cart',$cart);
    
            //dump($cart);
            return redirect()->route('allproducts');
        }
    

    如果要返回product页面,如下:

    return redirect()->route('allproducts'); //'allproducts' 在route中定义。
    
    1. 添加EC的购物车页面和route
    • 添加route:
     //show cart items
     Route::get('cart', ['uses'=>'ProductsController@showCart','as'=>'cartproducts']);
    
    • 在controller中添加showCart function
        public function showcart() 
        {
            $cart = Session::get('cart');
            if($cart) {
                
                return view('cartproducts',['cartItems'=>$cart]);
            }else{
                
                return redirect()->route('allproducts');
            }
            
        }
    

    - 关于view('xxx'): 在此处view指向的page名:cartProducts.blade.php,但显示正常,似乎在laravel7当中会自动修正大小写,但最好和view的文件名保持一致。
    - Session::get('cart')和$req->session()->get('cart')是一样的。

    • 添加购物车页面:
    @foreach($cartItems->items as $item)
    
    <td class="active">{{$item['data']['id']}}</td>
    <td class="active"><img src="{{Storage::disk('local')->url('product_images/').$item['data']['image']}}" width="100" height="100"></td>
    <td class="active">{{$item['data']['name']}}</td>
    <td class="active">{{$item['data']['type']}}</td>
    <td class="active">{{$item['data']['price']}}</td>
    @endforeach
    
    • Icon上跳转的修改
    <li><a href="{{route('cartproducts')}}"><i class="fa fa-shopping-cart"></i> Cart</a></li>
    

    讲模板中右上角cart icon的跳转静态Page改设成route的名

    1. Auth 功能的plugin
      用artisan 命令可以生成auth
    php artisan make:auth
    

    自动生成route,以及对应的view, controller和认证的页面。
    使用方式,在需要控制的页面加入如下例子的控制语句:

    @if(Auth::check())
     <li><a href="/home"><i class="fa fa-lock"></i> Profile</a></li>
    @else
     <li><a href="/home"><i class="fa fa-lock"></i> Login</a></li>
    @endif
    

    相关文章

      网友评论

          本文标题:Laravel Basic - 4 - 加入更多页面以及auth

          本文链接:https://www.haomeiwen.com/subject/hxlqxltx.html