getCheckoutUrl function

Thảo luận trong 'Programming Questions' bắt đầu bởi Kasihati, 11 Tháng tư 2009.

  1. Kasihati

    Kasihati New Member

    Chào các thành viên.
    Cho mình hỏi mình phải thêm đoạn code gì để có thể echo $this->getCheckoutUrl() ở trên một module mình mới tạo ra? Trên file view.phtml của module mình vừa tạo mình có echo nhưng kết quả là rỗng.
    Cảm ơn mọi sự giúp đỡ.

    Bài viết khác cùng chuyên mục:

  2. Kasihati

    Kasihati New Member

    Sử dụng $_GET[] và $_POST[]

    Chào các bạn.
    Mình đã thử truyền một biến lên url checkout/onepage?t=y nhưng khi $_GET biến t trong OnepageController.php thì báo lỗi. Ai biết vấn đề này show cho mình nhé.
    Many thanks.
  3. admin

    admin Mai Văn Hải Staff Member

    Re: Sử dụng $_GET[] và $_POST[]

    Do Magento mới với tất cả chúng ta, do đó bạn nói bạn viết module mới và muốn làm như điều bạn nói. Theo tôi nghĩ bạn phải có mô tả cách hoạt động của module, yêu cầu cần làm gì,v.v.. thì chúng ta mới có cách để bàn luận làm như thế nào.

    Hy vọng nhận được sự "Open" từ bạn!
  4. Lee_Min_Han

    Lee_Min_Han New Member

    Re: Sử dụng $_GET[] và $_POST[]

    Nguyên tắc viết link dẫn trong Magento như sau:

    Mã:
    ../index.php/ [ tên Module ] / [ tên Router - chính là controller ] / [ tên Action ]
    Như vậy với link: ../index.php/checkout/onepage thì: checkout là module, onepage Controller, do để trống, nên sẽ mặc định Action là indexAction
    Do vậy, muốn bắt được biến t, thì cậu pải viết link chuẩn là:
    Mã:
    ../index.php/checkout/onepage/index/t/y
    Hay ../index.php/checkout/onepage/index?t=y
    
    Tất cả các hàm PHP đều sử dụng OK trong Magento. Nhưng mình nên sử dụng các hàm có sẵn mà Magento viết lại cho thống nhất và Magento có thể bắt lỗi cho mình

    Cậu nên dùng hàm get, post có sẵn của Magento:

    Mã:
    $this->getRequest()->getParam("t");
    $this->getRequest()->getParams("t");
    $this->getRequest()->getPost("t");
  5. Lee_Min_Han

    Lee_Min_Han New Member

    Mã:
    $this->getCheckoutUrl();
    
    Ở đây $this sẽ trỏ tới Block mà cậu khai báo trong file Layout xml
    Như vậy ở file phtml này, cậu đã gọi đến function getCheckoutUrl() trong Block khởi tạo. Việc echo mà ko có là vì hàm này của cậu chưa có, hoặc hàm ko thực thi tác vụ nào !
    Vì vậy cậu pải vào trong block đó và viết các tác vụ cho hàm. VD, trong block Mage_Checkout_Block_Cart, hàm này được viết như sau:

    Mã:
        public function getCheckoutUrl()
        {
            return $this->getUrl('checkout/onepage', array('_secure'=>true));
        }
    
    Có vẻ như cậu chưa nghiên cứu kỹ về cấu trúc Model-View-Control trong Magento, nên nhiều câu hỏi hơi thiếu cơ bản
  6. Kasihati

    Kasihati New Member

    Cảm ơn sự quan tâm chia sẻ kiến thức của mọi thành viên. Mình mới tìm hiểu Magento nên còn thiếu cơ bản, nhờ mọi người chỉ giúp.
    Many thanks.

Chia sẻ trang này