Làm thế nào để trở thành một chuyên gia OpenCart? [đóng cửa]


98

Có vẻ như họ không có tài liệu nào ngoại trừ một số cuộc gọi api trên các diễn đàn chính thức của họ. Tôi có kinh nghiệm với Zend framework và CodeIgniter framework. Bất kỳ bậc thầy OpenCart nào có thể giới thiệu cho tôi cách tốt nhất để học nó và thành thạo trong khoảng thời gian ngắn nhất không? Tôi phải làm một dự án lớn với nó sớm.


Xem docs.opencart.comtổng quan về khung của Qphoria . Cũng duyệt qua các chủ đề trên Diễn đàn OpenCart> Hỗ trợ . Trong tương lai, chúng tôi hy vọng sẽ có một trang web OpenCart SE dành riêng tại area51.stackexchange.com/proposals/77558/opencart
Pacerier

Đây thực sự là một câu hỏi quan trọng, đôi khi khắc phục SO tiêu chuẩn là thực sự hữu ích ...
KAD

1
Cảm ơn rất nhiều cho câu hỏi này, nó đã giúp tôi rất nhiều
Bipul Roy

@BipulRoy Tôi rất vui! Có vẻ như đó là một câu hỏi phổ biến hiện nay!
CodeCrack

Câu trả lời:


311

Hướng dẫn bắt đầu nhanh dành cho nhà phát triển OpenCart 1.5.X dành cho người mới bắt đầu

Hướng dẫn này được viết cho các nhà phát triển đã quen thuộc với PHP, OOP và kiến ​​trúc MVC

Trong phần sau, bạn sẽ thấy các ví dụ cho phía danh mục của giỏ hàng. Phía quản trị viên có chức năng giống hệt nhau, ngoại trừ các chế độ xem được ghi chú trong phần liên quan


Hiểu thư viện

Tất cả các chức năng của thư viện đều có thể truy cập được thông qua Bộ điều khiển, Mô hình và Chế độ xem bằng cách sử dụng $this->library_name. Tất cả những thứ này có thể được tìm thấy trong /system/library/thư mục. Ví dụ: để truy cập các sản phẩm của giỏ hàng hiện tại, bạn sẽ cần sử dụng Cartlớp, nằm trong/system/library/cart.php và có thể được truy cập bằng$this->cart->getProducts()

Các mặt hàng thường dùng

  • customer.php - Các chức năng liên quan đến khách hàng
  • user.php - Các chức năng liên quan đến người dùng quản trị
  • cart.php - Các chức năng liên quan đến giỏ hàng
  • config.php - Tất cả cài đặt được tải từ cái này
  • url.php - Chức năng tạo URL

Hiểu thông số tuyến đường

Khung của OpenCart dựa vào route=aaa/bbb/ccctham số chuỗi truy vấn trong để biết nội dung cần tải và là tính năng nền tảng để tìm các tệp bạn cần chỉnh sửa cho mỗi trang. Hầu hết các tuyến đường thực sự chỉ sử dụng phần aaa/bbbnên được xem như hai phần, tuy nhiên một số có ba phần aaa/bbb/cccPhần đầu tiên aaathường liên quan đến thư mục trong một thư mục chung như bộ điều khiển hoặc các thư mục mẫu. Phần thứ hai thường liên quan đến tên tệp, không có liên quan .phphoặc .tplphần mở rộng. Phần thứ ba được giải thích trong phần "Hiểu bộ điều khiển" bên dưới


Hiểu ngôn ngữ

Ngôn ngữ được lưu trữ trong /catalog/language/thư mục trong your-languagethư mục con. Trong phạm vi này, các giá trị văn bản chung được sử dụng trên các trang khác nhau được lưu trữ trong your-language.phptệp bên trong thư mục, vì vậy đối với ngôn ngữ tiếng Anh ở phía danh mục, bạn sẽ tìm thấy các giá trị trong đó catalog/language/english/english.php. Đối với văn bản trang cụ thể, bạn sẽ cần nội dung routecho trang (Trường hợp này thường xảy ra, nhưng không phải lúc nào bạn cũng có thể chỉ định bất kỳ tệp ngôn ngữ nào bạn thích). Ví dụ: trang tìm kiếm có tuyến đường product/searchvà do đó có thể tìm thấy văn bản ngôn ngữ cụ thể cho trang đó catalog/language/english/product/search.php(Lưu ý rằng tên tệp và thư mục con khớp với tuyến đường theo sau .php.

Để tải ngôn ngữ trong bộ điều khiển, bạn sử dụng

$this->language->load('product/search');

Sau đó, bạn có thể sử dụng chức năng thư viện ngôn ngữ getđể truy xuất các văn bản ngôn ngữ cụ thể, chẳng hạn như

$some_variable = $this->language->get('heading_title');

Các biến ngôn ngữ được gán trong tệp ngôn ngữ bằng cách sử dụng một biến đặc biệt $_là một mảng các khóa và giá trị văn bản. Trong bạn, /catalog/language/english/product/search.phpbạn sẽ tìm thấy một cái gì đó tương tự như

$_['heading_title']     = 'Search';

Các giá trị trong tệp ngôn ngữ chung english/english.phpđược tải tự động và có sẵn để sử dụng mà không cần $this->language->loadphương thức


Hiểu bộ điều khiển

Bộ điều khiển được tải dựa trên routevà khá dễ hiểu. Bộ điều khiển được đặt trong /catalog/controller/thư mục. Tiếp tục từ ví dụ cuối cùng, Bộ điều khiển cho trang Tìm kiếm /product/search.phpnằm trong thư mục này. Lưu ý lại rằng tuyến đường tiếp theo là.php được sử dụng.

Mở tệp điều khiển, bạn sẽ thấy một tên lớp Pascal Case mở rộng Controllerlớp, được gọi ControllerProductSearch. Điều này một lần nữa dành riêng cho tuyến đường, vớiController theo sau là tên thư mục con và tên tệp mà không viết hoa phần mở rộng. Viết hoa không thực sự bắt buộc, nhưng nó được khuyến khích để dễ đọc. Cần lưu ý rằng tên lớp không nhận bất kỳ giá trị nào từ thư mục con và tên tệp ngoài các chữ cái và số. Dấu gạch dưới bị xóa.

Trong lớp là các phương thức. Các phương thức trong lớp được khai báo publiclà có thể truy cập được để chạy qua tuyến - privatethì không. Theo mặc định, với một lộ trình hai phần tiêu chuẩn ( aaa/bbbở trên), một index()phương thức mặc định được gọi. Nếu phần thứ ba của một tuyến đường ( cccở trên) được sử dụng, phương thức này sẽ được chạy thay thế. Ví dụ: account/return/insertsẽ tải /catalog/controller/account/return.phptệp và lớp và cố gắng gọi insertphương thức


Hiểu mô hình

Các mô hình trong OpenCart được tìm thấy trong /catalog/model/thư mục và được nhóm lại dựa trên chức năng, không phải theo tuyến, và do đó bạn sẽ cần tải chúng vào bộ điều khiển của mình thông qua

$this->load->model('xxx/yyy');

Thao tác này sẽ tải tệp trong thư mục con xxxđược gọi yyy.php. Sau đó, nó có sẵn để sử dụng thông qua đối tượng

$this->model_xxx_yyy

và như với bộ điều khiển, bạn chỉ có thể gọi các publicphương thức của nó . Ví dụ, để thay đổi kích thước một hình ảnh, bạn sẽ sử dụng tool/imagemô hình và gọi resizephương thức của nó như sau

$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);

Hiểu phép gán biến trong các khung nhìn từ bộ điều khiển

Để chuyển các giá trị đến khung nhìn từ bộ điều khiển, bạn chỉ cần gán dữ liệu của mình cho $this->databiến, về cơ bản là một mảng các cặp khóa => giá trị. Như một ví dụ

$this->data['example_var'] = 123;

Việc truy cập điều này trong một dạng xem sẽ dễ hiểu nếu bạn đã quen thuộc với phương thức extract () để chuyển đổi mỗi khóa thành một biến. Vì vậy, example_varkhóa trở thành $example_varvà có thể được truy cập như vậy trong khung nhìn.


Hiểu chủ đề

Chủ đề chỉ có sẵn cho phía danh mục và về cơ bản là một thư mục gồm các mẫu, bảng định kiểu và hình ảnh chủ đề. Thư mục chủ đề được đặt trong /catalog/view/theme/thư mục theo sau là tên chủ đề. Tên thư mục không quan trọng ngoại trừ defaultthư mục

Phía quản trị viên sử dụng /admin/view/template/(bỏ qua /theme/theme-name/đường dẫn vì nó không cho phép các chủ đề khác nhau)

Tệp mẫu nằm trong một templatethư mục trong thư mục chủ đề. Nếu bất kỳ mẫu nào không có sẵn cho chủ đề hiện được chọn, mẫu của thư mục mặc định sẽ được sử dụng thay thế làm dự phòng. Điều này có nghĩa là các chủ đề có thể được tạo với rất ít tệp và vẫn hoạt động đầy đủ. Nó cũng làm giảm sự trùng lặp mã và các vấn đề khi nâng cấp được thực hiện


Hiểu các chế độ xem (mẫu)

Như với ngôn ngữ và mô hình, tệp dạng xem thường liên quan đến tuyến đường, mặc dù không nhất thiết phải như vậy. Các mẫu ở phía danh mục thường được tìm thấy /catalog/view/theme/your-theme/template/trừ khi nó không tồn tại, trong trường hợp đó, các mẫu của chủ đề mặc định sẽ được sử dụng. Đối với ví dụ trang tìm kiếm của chúng tôi ở trên, tệp là product/search.tpl. Đối với các tuyến đường có ba phần, aaa/bbb_ccc.tplmặc dù không có quy tắc cố định nào. Trong phần quản trị, hầu hết các trang đều tuân theo điều này, ngoại trừ các trang liệt kê các mục, như trang danh sách sản phẩm, nằm trong catalog/product_list.tplvà biểu mẫu chỉnh sửa sản phẩm catalog/product_form.tpl. Một lần nữa, những điều này không được thiết lập, nhưng là tiêu chuẩn cho giỏ hàng mặc định.

Tệp mẫu trên thực tế chỉ là một tệp php khác, nhưng có phần mở rộng .tpl và thực sự được chạy trong tệp bộ điều khiển, do đó tất cả những thứ bạn có thể viết mã trong bộ điều khiển đều có thể chạy trong tệp mẫu (mặc dù không được khuyến nghị trừ khi hoàn toàn cần thiết)


Hiểu đối tượng cơ sở dữ liệu

Các truy vấn đang chạy bằng cách sử dụng

$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");

DB_PREFIX như tên cho thấy là một hằng số chứa tiền tố cơ sở dữ liệu nếu tồn tại

$resultsẽ trả về một đối tượng cho SELECTcác truy vấn, chứa một vài thuộc tính

$result->row chứa dữ liệu của hàng đầu tiên nếu một hoặc nhiều được trả về dưới dạng mảng kết hợp

$result->rows chứa một mảng kết quả hàng, lý tưởng để lặp lại bằng cách sử dụng foreach

$result->num_rows chứa số lượng kết quả trả về

Ngoài ra còn có một số phương thức bổ sung mà $this->dbđối tượng có

$this->db->escape()sử dụng mysql_real_escape_string () trên giá trị được truyền

$this->db->countAffectedtrả về số hàng bị ảnh hưởng bởi một UPDATEtruy vấn, v.v.

$this->db->getLastId()trả về id tăng dần tự động cuối cùng bằng cách sử dụng mysql_insert_id ()


Hiểu các biến dành riêng

OpenCart đã xác định trước các biến để sử dụng ở vị trí của tiêu chuẩn $_GET, $_POST, $_SESSION, $_COOKIE, $_FILES, $_REQUEST$_SERVER

$_SESSIONđược chỉnh sửa bằng cách sử dụng $this->session->datatrong đó dữ liệu là một mảng kết hợp bắt chước$_SESSION

Tất cả những thứ khác đều có thể được truy cập bằng cách sử dụng $this->requestvà đã được "làm sạch" để tuân thủ các dấu ngoặc kép được bật / tắt, vì vậy

$_GET trở thành $this->request->get

$_POST trở thành $this->request->post

$_COOKIE trở thành $this->request->cookie

$_FILES trở thành $this->request->files

$_REQUEST trở thành $this->request->request

$_SERVER trở thành $this->request->server


Tóm lược

Mặc dù phần trên không phải là hướng dẫn chắc chắn cho các nhà phát triển, nhưng hy vọng nó sẽ là điểm khởi đầu tốt cho những người mới bắt đầu


3
Cảm ơn! Bạn lấy cái này ở đâu?
CodeCrack

64
Tôi đã viết nó. I figured it cần thiết bằng văn bản và phù hợp với những queston
Jay Gilford

2
Rất đẹp. Cách nhiều thông tin hơn hầu hết các hướng dẫn. Bạn có cơ hội được nâng cao không?
CodeCrack

3
Điều này sẽ được cấp trạng thái Wiki cộng đồng
Stann0rz

1
@Ul DreamKing - Hướng dẫn này đã cung cấp cho bạn quá đủ thông tin để giúp bạn bắt đầu tạo mod của riêng mình. Ngoài ra còn có hướng dẫn cụ thể để phát triển mô-đun trên mạng
Jay Gilford

36

Phương thức Thư viện Toàn cầu: Các chức năng thư viện opencart cơ bản cùng với các chức năng của chúng, Hầu hết chúng có thể được gọi từ bất kỳ đâu trong danh mục hoặc thư mục quản trị (bộ điều khiển, mô hình, dạng xem)

CACHE
$this->cache->delete($key) - Deletes cache [product, category, country, zone, language, currency,
manufacturer]

CART
$this->cart->getProducts() Gets all products currently in the cart including options, discounted prices, etc.
$this->cart->add( $product_id, $qty = 1, $options = array()) - Allows you to add a product to the cart
$this->cart->remove( $key ) - Allows you to remove a product from the cart
$this->cart->clear() - Allows you to remove all products from the cart
$this->cart->getWeight() - Sum of the weight of all products in the cart that have require shipping set to Yes
$this->cart->getSubTotal() - returns the subtotal of all products added together before tax
$this->cart->getTotal() - returns the total of all products added together after tax
$this->cart->countProducts() - returns the count of all product in the cart
$this->cart->hasProducts() - returns true if there is at least one item in the cart
$this->cart->hasStock() - returns false if there is at least one item in the cart that is out of stock
$this->cart->hasShipping() - returns true if there is at least one item in the cart that requires shipping
$this->cart->hasDownload() - returns true if there is at least one item in the cart that has a download
associated

CONFIG
$this->config->get($key) - returns setting value by keyname based on application (catalog or admin)
$this->config->set($key, $value) - set the value to override the setting value. DOES NOT SAVE TO DATABASE

CURRENCY
$this->currency->set($currency) - set or override the currency code to be used in the session
$this->currency->format($number, $currency = '', $value = '', $format = TRUE) - format the currency
$this->currency->convert($value, $from, $to) - convert a value from one currency to another. Currencies must
exist
$this->currency->getId() - get the database entry id for the current currency (1, 2, 3, 4)
$this->currency->getCode() - get the 3-letter iso code for the current currency (USD, EUR, GBP, AUD, etc)
$this->currency->getValue($currency) - get the current exchange rate from the database for the specified
currency.
$this->currency->has(currency) - Check if a currency exists in the opencart currency list

CUSTOMER
$this->customer->login($email, $password) - Log a customer in
$this->customer->logout() - Log a customer out
$this->customer->isLogged() - check if customer is logged in
$this->customer->getId() - get the database entry id for the current customer (integer)
$this->customer->getFirstName() - get customer first name
$this->customer->getLastName() - get customer last name
$this->customer->getEmail() - get customer email
$this->customer->getTelephone() - get customer telephone number
$this->customer->getFax() - get customer fax number
$this->customer->getNewsletter() - get customer newsletter status
$this->customer->getCustomerGroupId() - get customer group id
$this->customer->getAddressId() - get customer default address id (maps to the address database field)

DATABASE
$this->db->query($sql) - Execute the specified sql statement. Returns row data and rowcount.
$this->db->escape($value) - Escape/clean data before entering it into database
$this->db->countAffected($sql) - Returns count of affected rows from most recent query execution
$this->db->getLastId($sql) - Returns last auto-increment id from more recent query execution 4

DOCUMENT (*Called from controller only before renderer)
$this->document->setTitle($title) - Set page title
$this->document->getTitle()- Get page title
$this->document->setDescription($description) - Set meta description
$this->document->getDescription()- Get meta description
$this->document->setKeywords()- Set meta keywords
$this->document->getKeywords()- Get meta keywords
$this->document->setBase($base) - Set page base
$this->document->getBase() - Get page base
$this->document->setCharset($charset) - Set page charset
$this->document->getCharset() - Get page charset
$this->document->setLanguage($language) - Set page language
$this->document->getLanguage()- Get page language
$this->document->setDirection($direction) - Set page direction (rtl/ltr)
$this->document->getDirection()- Get page direction (rtl/ltr)
$this->document->addLink( $href, $rel )  Add dynamic <link> tag
$this->document->getLinks()- Get page link tags
$this->document->addStyle( $href, $rel = 'stylesheet', $media = 'screen' )  Add dynamic style
$this->document->getStyles()- Get page styles
$this->document->addScript( $script ) - Add dynamic script
$this->document->getScripts()- Get page scripts
$this->document->addBreadcrumb($text, $href, $separator = ' &gt; ')  Add breadcrumb
$this->document->getBreadcrumbs()- Get Breadcrumbs

ENCRYPT
$this->encryption->encrypt($value) - Encrypt data based on key in admin settings
$this->encryption->decrypt($value) - Decrypt data based on key in admin settings

IMAGE
$this->image->resize($width = 0, $height = 0)

JSON
$this->json->encode( $data )
$this->json->decode( $data , $assoc = FALSE)

LANGUAGE
$this->language->load($filename);

LENGTH
$this->length->convert($value, $from, $to) - convert a length to another. units must exist
$this->length->format($value, $unit, $decimal_point = '.', $thousand_point = ',') - format the length to use
unit

LOG
$this->log->write($message) - Writes to the system error log

REQUEST
$this->request->clean($data) - Cleans the data coming in to prevent XSS
$this->request->get['x'] - Same as $_GET['x']
$this->request->post['x'] - Same as $_POST['x']

RESPONSE
$this->response->addHeader($header) - additional php header tags can be defined here
$this->response->redirect($url) - redirects to the url specified

TAX
$this->tax->setZone($country_id, $zone_id) - Set the country and zone id for taxing (integer)
$this->tax->calculate($value, $tax_class_id, $calculate = TRUE) - Calculate all taxes to be added to the total
$this->tax->getRate($tax_class_id) - Get the rates of a tax class id
$this->tax->getDescription($tax_class_id) - Get the description of a tax class id
$this->tax->has($tax_class_id) - Check if a tax class id exists in opencart

SESSION
$this->session->data['x'] - Same as $_SESSION['x']  

9

Có một trang web Wiki OpenCart với tài liệu cho các nhà phát triển mới bắt đầu. Thực hiện theo các url được cung cấp bên dưới để biết thêm chi tiết:

http://wiki.opencarthelp.com/doku.php?id=start
http://wiki.opencarthelp.com/doku.php?id=methods_reference

Liên kết INTERNET ARCHIVE

http://web.archive.org/web/20160305131349/http://wiki.opencarthelp.com/doku.php?id=start http://web.archive.org/web/20160305131349/http://wiki .opencarthelp.com / doku.php? id = method_reference

Ví dụ: tham chiếu Phương pháp có chi tiết cho:

  1. Đăng nhập khách hàng
  2. Quyền truy cập DB
  3. Xử lý giỏ hàng
  4. Cấu hình
  5. Bộ nhớ đệm
  6. Xử lý tiền tệ

Vẫn còn một số trang đang được xây dựng nhưng nó sẽ hữu ích.

[Cập nhật]

Kể từ tháng 1 năm 2018, miền opencarhelp.com đã ngừng hoạt động.


Có vẻ như vẫn còn thiếu nhiều thông tin sau một vài tháng. Dự án này có bị bỏ không?
Pacerier

@Pacerier, tôi không chắc về điều đó.
Dharmang

đây là một trang tuyệt vời ngay cả tài liệu tham khảo mở giỏ wiki nó, bạn sẽ nhìn thấy liên kết ở đây wiki.opencarthelp.com/doku.php?id=opencart_framework
Nassim

4

Mặc dù chủ đề này đã được trả lời nhiều lần, nhưng tôi muốn đưa ra một cách tiếp cận khác để làm chủ OpenCart dựa trên kinh nghiệm của tôi.

Vừa học vừa làm

Bằng cách tạo khung công tác OpenCart của riêng bạn từ đầu với một số ít tệp, bạn có thể hiểu cách mọi thứ được kết hợp với nhau. Tôi sẽ bắt chước cấu trúc tệp của OpenCart cho bạn.

Tạo một tệp index.php

<?php
// My simpleCart

1. Đăng ký

Opencart sử dụng mẫu Registry để liệt kê tất cả các trường hợp của các lớp được tải. Nó là trung tâm của ứng dụng OpenCart của bạn. Đối tượng đăng ký sau đó được chuyển đến mọi danh mục, mô hình và thư viện để truy cập nhanh vào các đối tượng khác.

tạo một tệp với đường dẫn /system/engine/registry.php

<?php
// Registry class. 
class Registry
{
    private $data = array();

    public function set($key, $value){
        $this->data[$key] = $value;
    }

    public function get($key){
        return (isset($this->data[$key])) ? $this->data[$key] : false;
    }
}

trong của bạn index.php

<?php
// My simpleCart

//load dependency files
require_once('system/engine/registry.php');

//initialize registry
$registry = new Registry;

2. Đầu ra

Bây giờ, hãy thêm một đầu ra sẽ là HTML của chúng ta trong tương lai. Rốt cuộc, toàn bộ ý tưởng là gửi một chuỗi văn bản đến trình duyệt.

Tạo tệp system/library/response.php

<?php
class Response {
    private $output;

    public function getOutput() {
        return $this->output;
    }

    public function setOutput($output) {
        $this->output = $output;
    }

    public function output() {
        if ($this->output) {
            echo $this->output;
        }
    }
}

và trong của bạn index.php

<?php
// My simpleCart

//load dependency files
require_once('system/engine/registry.php');
require_once('system/library/response.php');

//initialize registry
$registry = new Registry;

//initialize response
$response = new Response;
//add response object to the registry
$registry->set('response', $response);

//lets set an output as a test
$registry->get('response')->setOutput('Hello World');

//send the output to the client
$registry->get('response')->output();

Lưu ý rằng tôi chỉ thêm Hello world làm ví dụ. Chúng tôi sẽ xóa nó thêm vào. Làm mới trang web của bạn để kiểm tra nó. Trình duyệt sẽ hiển thị Hello World.

3. Bộ điều khiển

Hãy coi Bộ điều khiển như các trang. Họ sẽ xác định những gì sẽ được hiển thị cho khách hàng: văn bản, html, json, tải xuống hoặc thậm chí là một hình ảnh. Hiện tại, chúng tôi chỉ muốn một trang gửi văn bản.

Chúng tôi sẽ tạo một bộ điều khiển cho hometrang.

thêm một tệp với đường dẫn catalog/controller/common/home.php

<?php

class ControllerCommonHome{

    private $registry = array();

    public function __construct($registry){
        $this->registry = $registry;
    }

    public function index(){

        $output = 'Home Page';
        //using the registry to get the response object and set the Output
        $this->registry->get('response')->setOutput($output);
    }
}

và chỉnh sửa của bạn index.php

<?php
// My simpleCart

//load registry
require_once('system/engine/registry.php');
//load response
require_once('system/library/response.php');

//initialize registry
$registry = new Registry;

//initialize response
$response = new Response;
//add resoinse object to the registry
$registry->set('response', $response);

//load controller common/home
require_once('catalog/controller/common/home.php');
$controller = new ControllerCommonHome($registry);
$controller->index();

//send the output to the client
$registry->get('response')->output();

lưu ý cách tôi đã chuyển quyền $refistryđến ControllerCommonHome để tôi có thể truy cập nó bên trong bộ điều khiển.

4. Bộ định tuyến

Chúng tôi không muốn bộ điều khiển được mã hóa cứng, đúng không. Chúng tôi sẽ sử dụng một tham số routetừ địa chỉ url để cho giỏ hàng của chúng tôi biết bộ điều khiển nào cần tải.

Tạo một tệp với đường dẫn system/library/request.php

<?php
class Request {
    public $get = array();

    //for now I just need the $_GET parameter
    public function __construct() {
        $this->get = $_GET;
    }
}

Tạo lớp Bộ định tuyến sẽ chịu trách nhiệm khởi tạo tệp Bộ điều khiển dựa trên tuyến đường (nói cách khác: gọi động bộ điều khiển)

<?php
class Router {
    private $registry;

    public function __construct($registry) {
        $this->registry = $registry;
    }

    public function dispatch($route) {
        require_once('catalog/controller/'.$route.'.php');
        $class = "Controller".str_replace('/', '', $route);
        $controller = new $class($this->registry);
        $controller->index();
    }
}

nạp nó vào của bạn index.php

<?php
require_once('system/engine/registry.php');
require_once('system/engine/router.php');
require_once('system/library/response.php');
require_once('system/library/request.php');

$registry = new Registry;

$response = new Response;
$registry->set('response', $response);

$request = new Request;
$registry->set('request', $request);

//get the route from the url
if(isset($registry->get('request')->get['route'])){
    $route = $registry->get('request')->get['route'];
}else{
    $route = 'common/home';
}

//initiate the router and dispatch it base on the route
$router = new Router($registry);
$router->dispatch($route);


$registry->get('response')->output();

Lưu ý cách tôi tải mọi thứ vào $registryvà sau đó chuyển nó vào cái $routermà sau đó chuyển nó cho $controller.

Bài đăng này đã quá dài, nhưng tôi hy vọng nó sẽ cung cấp hiểu biết cơ bản về mẫu MVC trong OpenCart.

Nếu bạn muốn tôi tiếp tục với bài đăng này và cho bạn biết những thứ khác hoạt động như thế nào như mô hình và lượt xem, hãy đánh giá câu trả lời này để tôi biết.

Ngoài ra, hãy xem Youtube https://www.youtube.com/dreamvention và blog của tôi https://dreamvention.com/blog Tôi sẽ đăng thêm các mẹo và hướng dẫn ở đó cho các bạn!


1

PHP là một ngôn ngữ khá lớn với hơn 5000 hàm tích hợp vì vậy một chiến lược để học một nền tảng mới là xác định những chức năng mà nó sử dụng thường xuyên nhất và dành một chút thời gian để tìm hiểu kỹ những chức năng đó.

Tôi đã chạy một số truy vấn trên mã nguồn OpenCart và 10 chức năng được sử dụng phổ biến nhất là:

array()
count()
explode()
implode()
mktime()
delete()
time()
date()
sprintf()
list()

Tất cả 52 được liệt kê ở đây cũng như các lệnh cơ bản của Linux mà bạn có thể sử dụng trên bất kỳ cơ sở mã nào để xác định các chức năng thường được sử dụng: https://www.antropy.co.uk/blog/enough-learning-for-new-opencart-developers/


1

Danh sách phát video youtube này cũng có thể hữu ích để trở thành Gurus của nhà phát triển OpenCart:

Hướng dẫn Video OpenCart

  1. Giới thiệu và Mục lục Video này giới thiệu về loạt bài
  2. Cài đặt OpenCart localhost Video này hướng dẫn cài đặt OpenCart trong localhost
  3. Cấu trúc tệp và thư mục của Opencart Nó mô tả cấu trúc tệp và thư mục của OpenCart
  4. Tạo lược đồ bảng cơ sở dữ liệu trong OpenCart Nó hiển thị lược đồ bảng cơ sở dữ liệu và chỉ ra cách tạo bảng cơ sở dữ liệu trong OpenCart
  5. Phương thức của các đối tượng được xác định trước của Thư viện OpenCart Nó mô tả các Phương thức của các đối tượng được xác định trước của Thư viện OpenCart và chỉ ra nơi để tìm chúng.
  6. Mẫu MVCL, dòng mã và yêu cầu & phản hồi trong OpenCart Nó hiển thị mẫu MVCL, dòng mã và yêu cầu & phản hồi trong OpenCart. Họ mô tả dòng chảy như trong hình dưới đây: MVCL được mô tả bằng Mã

  7. Cài đặt, cấu hình và gỡ cài đặt mô-đun Opencart Nó chỉ ra ba cách để tải lên mô-đun, sau đó cài đặt, định cấu hình và gỡ cài đặt mô-đun / tiện ích mở rộng OpenCart 3.

  8. Bố cục và vị trí trong Opencart 3 Nó mô tả các bố cục và vị trí của OpenCart 3. Nó chỉ ra cách hiển thị bố cục tùy chỉnh cho các trang khác nhau, đưa ra ví dụ về các trang danh mục. Chúng tôi hiển thị bố cục khác nhau cho một danh mục khác.

  9. Tổng quan về sự kiện của Opencart Bạn sẽ tìm hiểu Sự kiện là gì trong OpenCart, cách chúng hoạt động và điều gì khiến chúng trở nên hữu ích.

  10. Tài liệu API Opencart dành cho nhà phát triển Video này sẽ hướng dẫn cách sử dụng và tạo API opencart tùy chỉnh

Khi bạn thấy những video này, bạn có thể bắt đầu viết mã :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.