Menu

10/16/21

Xây dựng cartcontroller


-Chuyển hướng URL (chuyển hướng trang) 

header('location:index.php?controller=CartController');

-ứng dụng session trong việc tạo giỏ hàng:

$_SESSION['cart']: thong tin gio hang

td01 - 2 : key-value: mã sách và số lượng

td02 - 3:  key-value: mã sách và số lượng

$_SESSION['cart'] = ['td01'=>2, 'td02'=>3]

Thực tế: var_dump($_SESSION);

==> Mảng 2 chiều:

Array ( [cart] => Array ( [td01] => 1 ) )

Thực tế: var_dump($_SESSION['cart']);

==> Mảng 1 chiều: 

Array ( [td01] => 1 )

-Khi truyền giá trị lên thanh URL, nếu số lượng ko có thì mặc định là 01 sản phẩm

 index.php?controller=CartController&action=add&id=td01

Để lấy giá trị của URL ta dùng hàm getindex

$id = getIndex('id'); //$id=td01;

$sl = getIndex('sl', 1);//sl=1

Lưu ý: 

if(!isset($_SESSION)) session_start();

var_dump($_SESSION);

Trước khi dùng session, phải start() dù cho giá trị $_SESSION là empty- rỗng.

Xây dựng 1 giỏ hàng ảo: 

	<?php
        function add()

	{

		if(!isset($_SESSION)) session_start();

		$_SESSION['CART']=array('td01'=>2,'td02'=>5);

		//unset($_SESSION['CART']);

		var_dump($_SESSION);

	}

Thông tin giỏ hàng được lưu vào mảng 1 chiều:

$_SESSION['cart'], nhưng do lần đầu khi chưa mua hàng thì mảng rỗng, nên phải dùng mảng tam[] để khới tạo giá trị rồi gán ngược lại cho mảng $_SESSION['cart'].

function add()
	{
		//index.php?controller=CartController&action=add&id=td01
		$id = getIndex('id'); //$id=td01;
		$sl = getIndex('sl', 1);//sl=1
		$tam = isset($_SESSION['cart'])?$_SESSION['cart']:[];//$tam=[];
		if (isset($tam[$id]))
		{
			$tam[$id] += $sl;
		}
		else $tam[$id]=$sl;

		$_SESSION['cart']= $tam;
		header('location:index.php?controller=CartController');
		
	}
kiểm tra giỏ hàng dùng hàm print_r trong index:

function index()
	{

		print_r($_SESSION); //hoặc: print_r($_SESSION['cart']);
}
 
CART CONTROLLER THÊM SAN PHAM KHI XAY DUNG XONG

<?php
class CartController
{
	function __construct()
	{
		$action =getIndex('action','index');

		if(method_exists($this,$action)){
			$ref=new ReflectionMethod($this, $action);
			if(!$ref->isPublic()){
				echo "ham ko duoc public";exit;
			}
			
			$this->$action();
		}
		else{
			echo "ham ".$action. " chua xay dung!";
		}
		
	}
	function index()
	{
		//if(!isset($_SESSION)) session_start();
		var_dump($_SESSION['cart']);
	}
	function add()
	{
		//if(!isset($_SESSION)) session_start();
	    $id=getIndex("id");
	    $sl=getIndex("sl",1);
	    $tam=isset($_SESSION['cart'])?$_SESSION['cart']:[];
	    if(isset($tam[$id])){
	    	$tam[$id]+=$sl;
	    } else $tam[$id]=$sl;
	    
        $_SESSION['cart']=$tam;
        header('location:index.php?controller=CartController');
        
	}

        function delete()
	{     
                $id = getIndex('id');
		$tam = $_SESSION['cart']?$_SESSION['cart']:[];
		unset($tam[$id]);
		$_SESSION['cart']= $tam;
		header('location:index.php?controller=CartController');

	}
} ?>
-Thêm tính năng chọn up/down số lượng sản phẩm bằng form


<?php
<form action="index.php" method="get">
                    <input type="hidden" name="controller" value="CartController">
                    <input type="hidden" name="action" value="add">
                    <input type="hidden" name="id" value="<?php echo $data['masach'];?>">
                    <input type="number" name="sl" value="1" min="1" max="10" autofocus>
                    <input type="submit" value="addcart">
                    
</form>


No comments:

Post a Comment