• Trang chủ
  • Sản phẩm – Dịch vụ
    • Tạo ứng dụng di động
      • AppTeng Go
    • Smart ERP Go
      • Lite Smart ERP Go
      • Medium Smart ERP Go
    • Tạo QR Code
      • QR Code Go Free
  • Bảng giá
  • Bảng điều khiển
    • Đăng nhập
      • Tạo ứng dụng di động
      • Smart ERP Go
        • Lite ERP Go
        • Medium ERP Go
      • Tạo QR Code
        • QR Code Go Free
        • QR Code Pos – Res
        • QR Pos – Pro
      • Smart CRM / ERP
        • Smart CRM / ERP Go
      • Giáo dục
        • Edu Go Free
      • Giám sát
        • Monitor
    • Đăng ký
      • Tạo ứng dụng di động
      • Smart ERP Go
        • Lite Smart ERP Go
        • Medium ERP Go
      • Tạo QR Code
        • QR Code Go Free
        • QR Pos – Res
        • QR Pos – Pro
      • Smart CRM / ERP Go
        • Lite CRM / ERP Go
      • Giáo dục
        • Edo Go Free
      • Giám sát
        • Monitor
  • Kiến thức chung
  • Trang chủ
  • Sản phẩm – Dịch vụ
    • Tạo ứng dụng di động
      • AppTeng Go
    • Smart ERP Go
      • Lite Smart ERP Go
      • Medium Smart ERP Go
    • Tạo QR Code
      • QR Code Go Free
  • Bảng giá
  • Bảng điều khiển
    • Đăng nhập
      • Tạo ứng dụng di động
      • Smart ERP Go
        • Lite ERP Go
        • Medium ERP Go
      • Tạo QR Code
        • QR Code Go Free
        • QR Code Pos – Res
        • QR Pos – Pro
      • Smart CRM / ERP
        • Smart CRM / ERP Go
      • Giáo dục
        • Edu Go Free
      • Giám sát
        • Monitor
    • Đăng ký
      • Tạo ứng dụng di động
      • Smart ERP Go
        • Lite Smart ERP Go
        • Medium ERP Go
      • Tạo QR Code
        • QR Code Go Free
        • QR Pos – Res
        • QR Pos – Pro
      • Smart CRM / ERP Go
        • Lite CRM / ERP Go
      • Giáo dục
        • Edo Go Free
      • Giám sát
        • Monitor
  • Kiến thức chung
Trang chủ/Hướng dẫn/Nền tảng Tạo ứng dụng di động/Dành cho Nhà phát triển/Phát triển riêng Module cho ứng dụng

Phát triển riêng Module cho ứng dụng

478 lượt truy cập 0 13/04/2020

Hướng dẫn tại đây bao gồm mọi thứ cần thiết để bắt đầu phát triển Module của bạn vận hành trên nền tảng AppTeng, bao gồm cấu trúc để cập nhật thường xuyên và đóng gói Module.

Khái niệm Module trên nền tảng AppTeng là gì?

Module là một trong các thành phần cốt lõi của nền tảng AppTeng, dùng để hoạt động trên giao diện người dùng, Bảng điều khiển ứng dụng, các tuỳ biến tính năng và thậm chí là nhiều hơn nữa.

Một Module là duy nhất với các tính năng và cài đặt hoàn chỉnh trên nền tảng AppTeng để được sử dụng trong các ứng dụng di động và được quản lý trong Bảng điều khiển ứng dụng.

Vui lòng liên hệ với chúng tôi để nhận Lõi Module mẫu, từ đó bạn có thể bắt đầu với việc tạo Module chạy trên nền tảng AppTeng.

Kết cấu Module

Cấu trúc thư mục

ModuleName
├─ Controller
│  └─ Default.php   /** Nếu bạn cần ghi đè các lớp điều khiển mặc định */
├─ controllers
│  ├─ Backoffice
│  │  └─ ModuleName.php
│  └─ Mobile
│     └─ ModuleName.php
├─ Form
├─ Model
├─ View
├─ resources
│  ├─ db
│  │  ├─ data
│  │  └─ schema
│  ├─ media 
│  │  └─ library
│  ├─ translations
│  │  ├─ default
│  │  │  └─ mymodule.csv
│  │  ├─ en
│  │  └─ [...]
│  ├─ design
│  └─ var           /** Mọi thứ liên quan đến ứng dụng gốc. */
└─ package.json

Các khái niệm cơ bản

1.Các package.json là gì ?

Các package.json được sử dụng bởi trình cài đặt để nhận biết các tham vấn, nó được lập trình để chạy cài đặt, cập nhật và nâng cấp:

{
  "name": "ModuleName",
  "description": "Module description",
  "type": "module",
  "version": "1.0",
  "dependencies": {
    "system": {
      "type": "TEA",
      "version": "4.6.2"
    },
    "modules": {
      "OtherModule": "4.6.2"
    }
  }
}

2. resources/db/schema

AppTeng sử dụng resources/db/schema/table_name.php để mô tả các bảng schema;

Dưới đây là một ví dụ về một bảng cơ bản.

Tập tin này phản ánh cơ sở dữ liệu của bạn hiện tại trong phiên bản mới nhất, mỗi khi bạn tiến hành cập nhật phiên bản mới của Module, nó sẽ so sánh với tập tin này và cập nhật những gì còn thiếu.

Lưu ý quan trọng: Bảng schema sẽ thêm các trường mới nếu nó chưa có, các trường dữ liệu đã có không bao giờ được gỡ bỏ.

<?php
/**
 * Định nghĩa lược đồ cho 'table_name'
 */
$schemas = (!isset($schemas)) ? array() : $schemas;
$schemas['table_name'] = array(
    'mytable_id' => array(
        'type' => 'int(11) unsigned',
        'auto_increment' => true,
        'primary' => true,
    ),
    'admin_id' => array(
        'type' => 'int(11) unsigned',
        'is_null' => true,
        'foreign_key' => array(
            'table' => 'admin',
            'column' => 'admin_id',
            'name' => 'FK_MY_MODULE_ADMIN_ID_ADMIN_AMIN_ID',
            'on_update' => 'CASCADE',
            'on_delete' => 'CASCADE',
        ),
    ),
    'name' => array(
        'type' => 'varchar(50)',
        'default' => 'default_value',
        'index' => true,
    ),
    'created_at' => array(
        'type' => 'datetime',
    ),
    'updated_at' => array(
        'type' => 'datetime',
    ),
);

Danh sách các tùy chọn có sẵn:

KEY KIỂU CÁCH SỬ DỤNG, GIÁ TRỊ, HƯỚNG DẪN
 type  String  int(11) unsigned, varchar(50), datetime, vân vân….
 auto_increment  Boolean
 primary  Boolean
 is_null  Boolean
 default  mixed
 foreign_key  Array()  Xem tuỳ chọn ForeForeign Key ở Bảng bên dưới
 index  Array()  Xem tuỳ chọn Index ở Bảng bên dưới

Tuỳ chọn Foreign Key

KEY KIỂU CÁCH SỬ DỤNG, GIÁ TRỊ, HƯỚNG DẪN
 table String Bảng tham chiếu
 column String Cột được tham chiếu trong bảng
 name String Tên Foreign Key (Ví dụ: FK_TABLENAME_KEYNAME_REFTABLENAME_REFKEYNAME)
 on_update String NO ACTION, SET NULL, CASCADE, RESTRICT
 on_delete String NO ACTION, SET NULL, CASCADE, RESTRICT

Tuỳ chọn Index

KEY KIỂU CÁCH SỬ DỤNG, GIÁ TRỊ, HƯỚNG DẪN
 key_name String Tên Index, sử dụng giống nhau trên nhiều cộtcột cho chỉ số tổng hợp
 index_type String BTREE, HASH
 is_null Boolean
 is_unique Boolean

3. resources/db/data

Thư mục này được sử dụng để chèn các giá trị mặc định khi cài đặt, hoặc cập nhật một Module.

Mỗi tập tin php trong thư mục này sẽ được thực hiện khi cài đặt và/hoặc cập nhật module, nó cần được thể hiện dữ liệu cần thiết là phiên bản mới nhất.

Các tên cấm xoá bao gồm install.php và %VERSION%.php là một chuỗi semver, bạn không bao giờ phải sử dụng chúng.

Hướng lập trình tốt nhất:

Nếu Module của bạn có nhiều tính năng, hãy chia chúng thành nhiều file, ví dụ feature1.php, feature2.php, vân vân …

Dưới đây là một ví dụ cho File tập tin có tên job.php

<?php
# Job module, data.
$name = "Job";
$category = "social";

# Icon, icon trước hết được đặt làm mặc định cho Module, 
# sau đó tất cả icon được chèn vào trong thư viện.
$icons = array(
    "/app/local/modules/Job/resources/media/library/job1.png",
    "/app/local/modules/Job/resources/media/library/job2.png",
);

$result = AppTeng_Feature::installIcons($name, $icons);

# Cài đặt Module
$data = array(
    "library_id"                    => $result["library_id"],
    "icon_id"                       => $result["icon_id"],
    "code"                          => "job",
    "name"                          => $name,                   
    "model"                         => "Job_Model_Company",
    "desktop_uri"                   => "job/application_job/",
    "mobile_uri"                    => "job/mobile_list/",
    "mobile_view_uri"               => "job/mobile_view/",
    "mobile_view_uri_parameter"     => "company_id",
    "only_once"                     => 0,
    "is_ajax"                       => 1,           
    "position"                      => 1000,
    "social_sharing_is_available"   => 1
);

$option = AppTeng_Feature::install($category, $data, array("code"));

# Nhiều sắp xếp bố trí
#
# Nếu module của bạn có nhiều sắp xếp bố trí, hãy sử dụng phần sau đây, nếu không hãy bỏ qua nó
# Bố trí Layouts
$layout_data = array(1, 2);
$slug = "job";

AppTeng_Feature::installLayouts($option->getId(), $slug, $layout_data);
# !Nhiều bố trí layouts

# Phần này trùng lặp các icons cho thiết kế Flat, bạn có thể có nhiều icons khác nhau 
# hoặc cùng sử dụng một icons, bạn phải viết phần này
# Icons
$icons = array(
    "/app/local/modules/Job/resources/media/library/job1.png",
    "/app/local/modules/Job/resources/media/library/job2.png",
);

$result = AppTeng_Feature::installIcons("{$name}-flat", $icons);

Danh sách các tuỳ chọn:

KEY KIỂU CÁCH SỬ DỤNG, GIÁ TRỊ, HƯỚNG DẪN
 $name String Tên Module của bạn
 $category String social, media, contact, monetization, customization, integration, events, misc

Danh sách các tuỳ chọn cho $data

KEY KIỂU CÁCH SỬ DỤNG, GIÁ TRỊ, HƯỚNG DẪN
 code  String  Đây là code duy nhất cho Module của bạn
 name  String  Tên Module của bạn
 model  String  Mô hình lớp mặc định được sử dụng trong trình biên tập Module.
 desktop_uri  String  Mặc định lớp điều khiển uri sử dụng trong trình biên tập Module.
 mobile_uri  String
 mobile_view_uri  String
 mobile_view_uri_parameter  String
 only_one  Boolean  Điều chỉnh Module có một lần tính năng này, hoặc nhiều hơn.
 is_ajax  Boolean
 position  Integer  Vị trí tính năng trong danh sách các tính năng của module, để trống cho tự động.
 social_sharing_is_available  Boolean  Cho phép chia sẻ mạng xã hội module của bạn (thử nghiệm)

Dịch các ngôn ngữ cho Module

Đầu tiên tạo một file mới có tên mymodule.csv sau đó đặt file này trong thư mục translations/default

Nếu bạn muốn module của bạn được phép xuất hiện trong nhiều bản dịch ngôn ngữ khác nhau, hãy tách các file trong các thư mục có tên với mã ngôn ngữ cụ thể:

Ví dụ:

– Tiếng Việt cần ở trong thư mục translations/vi/mymodule.csv

– Tiếng Anh cần ở trong thư mục translations/en/mymodule.csv

Dưới đây là các ví dụ file ngôn ngữ Tiếng Anh và Tiếng Việt có tên contact.csv

Lưu ý quan trọng: Vui lòng liên hệ với chúng tôi trước khi đặt tên, để tránh đặt tên file trùng với các file ngôn ngữ hiện đã có trên nền tảng AppTeng, vì khi đó các  bản dịch ngôn ngữ của bạn sẽ không hoạt động.

Tiếng Việt:

"Đã xảy ra lỗi khi lưu thông tin liên hệ của bạn."
"Đã xảy ra lỗi khi thực hiện yêu cầu của bạn. Vui lòng thử lại sau ít phút"
"Và đây là số điện thoại của anh ấy:"
"Bạn chắc chắn muốn xoá hình ảnh này?"
"Thành phố"
"Thông tin liên hệ"
"Địa chỉ Email:"
"Nội dung tin nhắn:"
"Vui lòng nhập dữ liệu trong các trường sau: <br/>"
"Twitter"
"Website"
"Bạn đã nhận được tin nhắn từ:"
"Email của bạn"
"Tin nhắn của bạn đã được gửi đi"
"Tìm kiếm của bạn"
"Quận/Huyện" 

Tiếng Anh

"An error occurred while saving your contact informations."
"An error occurred while sending your request. Please try again later."
"And his phone number:"
"Are you sure you want to remove the picture?"
"City"
"Contact information"
"Here is his email:"
"Here is his message:"
"Please enter properly the following fields: <br/>"
"Twitter"
"Website"
"You have received a message from a contact:"
"Your email"
"Your message has been sent"
"Your request"
"Zip code"

Dưới đây là ví dụ về một File ngôn ngữ mà bạn nên thực hiện:

[...]
"City";"Thành phố"
"Contact information";"Thông tin liên hệ"
"Here is his email:";"Địa chỉ Email"
"Here is his message:";"Nội dung tin nhắn"
[...]

Thiết kế

Tất cả mọi thứ bạn cần để tổ chức, sắp xếp, tương tác…. module của bạn nằm trong thư mục design

ModuleName
├─ [...]
├─ resources
│  └─ design
│     ├─ desktop
│     │  ├─ appteng
│     │  │  ├─ css
│     │  │  │  └─ job.css
│     │  │  ├─ js
│     │  │  │  └─ job.js
│     │  │  ├─ images
│     │  │  │  └─ customization
│     │  │  │     └─ layout
│     │  │  │        └─ job
│     │  │  │           ├─ layout-1.png
│     │  │  │           └─ layout-2.png
│     │  │  ├─ layout
│     │  │  │  ├─ job.xml
│     │  │  │  └─ company.xml
│     │  │  └─ template
│     │  │     ├─ company
│     │  │     │  └─ [...]
│     │  │     └─ job
│     │  │        ├─ index.phtml
│     │  │        └─ application
│     │  │           ├─ edit.css
│     │  │           ├─ edit.js
│     │  │           └─ edit.phtml
│     │  └─ flat
│     │     └─ [...] # Tiêu chuẩn thiết kế Flat của AppTeng
│     └─ email
│        ├─ layout
│        └─ template
└─ [...] 

Ví dụ job.xml

Đây là thông tin được yêu cầu tối thiểu trong layout.xml mặc định, các File tập tin cần phải đặt tên riêng theo tên module của bạn, trong ví dụ này nó nên là job.xml :

<?xml version="1.0" encoding="UTF-8"?>
<layout>
    <job_application_job_edit>
        <views>
            <content class="application_view_customization_features_edit_tabbareditor" template="application/customization/features/edit/tabbar_editor.phtml" />
            <content_editor class="core_view_default" template="job/application/edit.phtml" />
        </views>
    </job_application_job_edit>
</layout>

Phần content là mặc định cho các tab biên tập soạn thảo Module, bạn không cần phải thay đổi nó.

Phần content_editor phải đặt trong khu vực tính năng biên tập soạn thảo template

Ví dụ: job/application/edit.phtml phải được đặt trong ModuleName/resources/design/template/job/application/edit.phtml

Lưu ý quan trọng: Sử dụng đường dẫn thư mục càng ngắn càng tốt

Bộ nhớ cache

Module cũ sẽ được lưu trữ, vì vậy mỗi khi chúng tôi thêm hoặc xóa một tập tin trong mô-đun, chúng tôi sẽ xóa các tập tin trong var/cache/design.cache

Lưu ý quan trọng: Khi chúng tôi cài đặt và/hoặc cập nhật một module thường xuyên với định dạng zip, bộ nhớ cache sẽ được tự động xóa cho người sử dụng.

Đóng gói Module

Sau khi hoàn tất Module của bạn, hãy đóng gói nó !

Nén .zip tất cả mọi thứ tại thư mục gốc của Module và bạn đã hoàn tất!

ModuleName.zip
├─ Controller
├─ controllers
│  └─[...]
├─ Model
├─ View
├─ resources
│  └─[...]
└─ package.json 

Quy trình AppTeng gỡ bỏ cài đặt Module trên hệ thống:

Mỗi module cần phải đi kèm với un-installer riêng của nó, nó cần phải là tập tin duy nhất có tên uninstall.php nằm trong thư mục gốc của gói.

Tất cả được cài đặt bởi các tập tin nằm trong resources/db/data và mỗi bảng được tạo trong resources/db/schema

<?php
# Job module un-installer.

$name = "Job";

# Làm sạch thư viện icons
AppTeng_Feature::removeIcons($name);
ApTeng_Feature::removeIcons("{$name}-flat");

# Làm sạch bố trí Layouts
$layout_data = array(1, 2);
$slug = "job";

AppTeng_Feature::removeLayouts($option->getId(), $slug, $layout_data);

# Làm sạch Các Tuỳ chọn/Các module
$code = "job";
AppTeng_Feature::uninstallFeature($code);

# Làm sạch DB (Thận trọng với bước này).
$tables = array(
    "job_company",
    "job_place",
);
AppTeng_Feature::dropTables($tables);

# Làm sạch module
AppTeng_Feature::uninstallModule($name);

Đóng gói Module.

Nén .zip tất cả các File từ thư mục gốc của bạn. Gửi File nén .zip cho chúng tôi tới app@appteng.app

Ban kỹ thuật AppTeng sẽ kiểm tra sự phù hợp của nó trên nền tảng thử nghiệm, nếu đạt tiêu chuẩn, chúng tôi sẽ kích hoạt nó cho bạn.

Bạn đã hoàn tất.

Bài viết này có giúp ích gì cho bạn không ?

Có  Không
Cùng chuyên mục
  • Tài liệu API trên nền tảng AppTeng
  • Nhà phát triển trên nền tảng AppTeng là gì ?
  • Phát triển Form riêng cho ứng dụng
  • Phát triển riêng giao diện cho ứng dụng
Có thể bạn quan tâm
  • Tạo Chứng chỉ Phân phối iOS (iOS Distribution Certificate)
  • Hướng dẫn các bước Xuất bản ứng dụng Android
  • Module Thương mại điện tử
  • Làm thế nào để tạo File .IPA cho ứng dụng iOS ?
  • Làm thế nào để thay đổi icon hình ảnh của Module
Danh mục hướng dẫn
  • Nền tảng Edu Go (Miễn phí cho Trường học – Cơ sở giáo dục 5
    • Thiết lập hệ thống Trường học 2
    • Câu hỏi thường gặp 1
    • Bắt đầu 1
    • Các vấn đề khác 1
  • Nền tảng Tạo ứng dụng di động 7
    • Làm thế nào ? 3
    • Thư viện mẫu CSS miễn phí 2
    • Bắt đầu 7
    • Các bước tạo ứng dụng di động 6
    • Giao diện ứng dụng 13
      • Tuỳ chỉnh giao diện với CSS 24
    • Các Module ứng dụng 61
    • Xuất bản ứng dụng Android 4
    • Xuất bản ứng dụng iOS 17
    • Tuỳ chỉnh và Nâng cao 28
      • Sử dụng HTML trong ứng dụng 14
    • Kiếm tiền với AdMob 5
    • Ứng dụng Android và các vấn đề đã biết 1
    • Ứng dụng iOS và các vấn đề đã biết 2
    • Gỡ lỗi 2
    • Dành cho Nhà phát triển 4
      • Tài liệu API 1
    • Các vấn đề khác 9
  • Chương trình Đại lý AppTeng 18
    • Bắt đầu 14
    • Hướng dẫn thực hiện 3
    • Câu hỏi thường gặp của Chương trình đại lý 10
  • Kiến thức chung 3
  • Nền tảng Email Go (Email Marketing 23
    • Khái Niệm, Thuật Ngữ 10
    • Thiết lập Hệ thống Email Marketing trên nền tảng Email Go của bạn 5
    • Tạo tài nguyên Hệ thống 2
    • Chiến Dịch Email Marketing 2
    • API KEY 1
    • Phí Dịch vụ 1
    • Các vấn đề chung 2
  • Nền tảng File Go 2
    • Bắt đầu 2
  • Lite Marketing 5
    • Thực hiện 1
    • Khái niệm, Thuật ngữ 3
    • Bắt đầu 1
  • Nền tảng Ad BioLink 1
    • Khái niệm, Thuật ngữ 1
  • Nền tảng QR Pos – Res 2
    • Bắt đầu 1
    • Thực hiện 1
  • Nền tảng Tạo Website Cửa hàng – Comment – Chat Bot tự động trên Facebook – Instagram 19
    • Khái niệm, Thuật ngữ 6
    • Cửa hàng Thương mại điện tử 12
    • Bắt đầu 1
  • Nền tảng Quản trị Nhân sự HRM Go 1
    • Bắt đầu 1
  • Nền tảng GetFund – Góp vốn đầu tư 1
  • Nền tảng Thương mại điện tử – Shop 4
    • Bắt đầu 1
    • Kinh doanh bán hàng 3
  • Nền tảng WebPro – Tạo nhanh Website 3
    • Bắt đầu 2
    • Các bước tạo Website 1
  • Email dành cho Doanh nghiệp 5

  Phát triển Form riêng cho ứng dụng

Phát triển riêng giao diện cho ứng dụng  

AppTeng Việt Nam
Giới thiệu
Danh sách phát hành
Tin tức
Chính sách Cộng tác viên
Chính sách Đại lý
Chính sách bảo mật
Điều khoản sử dụng
Chính sách và Quy tắc hoàn lại tiền
  • Chính sách bảo mật
  • Điều khoản sử dụng
  • © 2014 - 2022 AppTeng - phát triển và Vận hành.