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>


Cách kiểm tra sự tồn tại của hàm

 Kiểm tra sự tồn tại của hàm theo cách thông thường:

-Trong php có hàm mặc định method_exist(), sẽ trả về kết quả true nếu hàm tồn tại:

VD1: 

<?php
class CartController
{
	function __construct()
	{
		$action =getIndex('action','index');
		
		if(method_exists($this,$action)){
			$this->$action();
		}
		else{
			echo "ham ".$action. " chua xay dung!";
		}
		
	}
	function index()
	{
		echo "day la index CartController";
	}
	function F1()
	{
		echo "ham f1 dc goi";
	}

}
?>



Kiểm tra sự tồn tại của hàm và phạm vi truy xuất dựa vào hàm ReflectionMethod
class CartController
{

	function __construct()
	{
		
		$action=getIndex('action','index');
		if (method_exists($this, $action))
		{
			$reflection = new ReflectionMethod($this, $action);
		    if (!$reflection->isPublic()) {
		     
		     echo "CO, NHUNG PHAI PUBLIC MOI DUOC GOI";exit;
		    }

			$this->$action();
		}
		else 
		{
			echo "Chua xay dung ham...";
			exit;
		}
	}
       function index()
	{
		echo "ham index duoc goi";
		
	}

	protected function add()
	{
		echo "ham add duoc goi";
		
	}

}

Khi gọi controller và nhận kết quả:

http://localhost/mvc/index.php?controller=CartController&action=add
CO, NHUNG PHAI PUBLIC MOI DUOC GOI

10/10/21

Xây dựng hàm định dạng tiền tệ php

<?php
/**
 *
 * Chuyển đổi chuỗi kí tự thành dạng slug dùng cho việc tạo friendly url.
 *
 * @access    public
 * @param    string
 * @return    string
 */
if (!function_exists('currency_format')) {
    function currency_format($number, $suffix = 'đ') {
        if (!empty($number)) {
            return number_format($number, 0, ',', '.') . "{$suffix}";
        }
    }
}

Khi gọi hàm:

<?php
echo currency_format(5000000);
?>
<?php
echo currency_format(37, 'USD');
?>