Anhtrankg | The Note For Codding

Đối với Eccube 4 thì việc tạo một trang mới đơn giản hơn so với eccube 3. Trong bài viết này mình sẽ giới thiệu về cách tạo một trang mới trong màn hình quản lý của eccube.

Ví dụ tạo một trang mới với tên là sale với link để truy xuất sẽ có dạng http://管理画面/sale

1.Tạo một trang Controller

Tạo một file SaleController mới trong app/Customize/Controller/Admin/Sale/SaleController.php với nội dung như sau

<?php namespace Customize\Controller\Admin\Sale; use Eccube\Controller\AbstractController; use Eccube\Util\CacheUtil; use Knp\Component\Pager\Paginator; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; class SaleController extends AbstractController { /** * @Route("/%eccube_admin_route%/sale", name="admin_sale") * @Template("@admin/Sale/index.twig") */ public function index(Request $request) { } }

Trong đoạn code trên thì annotation Route để khai báo đường dẫn khi truy xuất vào trang mới và admin_sale là tên của nó khi các trang khác cần gọi đến và được dùng để khai báo khi thêm link để truy xuất từ menu quản lý của eccube. Annotation Template để khai báo thư mục mà template trang này sẽ dùng khi cần render ra.

Trong method index() sẽ viết các logic về xử lý dữ liệu trên giao diện cũng như khi kết nối với database, ở ví dụ này thì tạm thời method index để trống cũng được

Cơ bản thì file Controller nên để trong thư mục app/Customize/Controller thì tốt hơn

2.Tạo file template twig

tạo file app/template/admin/Sale/index.twig với nội dung như sau

{% extends '@admin/default_frame.twig' %} {% set menus = ['sale', 'sale'] %} {% block title %}タイトル{% endblock %} {% block sub_title %}サブタイトル{% endblock %} {% block main %} nội dung dự liệu render ở đây {% endblock %}

trong đó

・ {% extends ‘@admin/default_frame.twig’ %} → nhúng trang mới vào giao diện hiện có của eccube

・ {% set menus = [‘sale’, ‘sale’] %} → để active link của menu khi bạn truy xuất vào trang mới này

※ Chú ý: đường dẫn và tên của file twig phải giống với khai báo ở annotation Template ở file Controller bên trên

Vậy là chúng ta đã xong tạo một trang mới trên trình quản lý admin của eccube.

3.Thêm link trên menu của trình quản lý admin

Vậy giờ nếu muốn thêm link truy xuất của trang này ở menu quản lý của eccube thì khai báo thêm trong file app/config/eccube/packages/eccube_nav.yaml

parameters: eccube_nav: product: name: admin.product.product_management icon: fa-cube children: product_master: name: admin.product.product_list url: admin_product product_edit: name: admin.product.product_registration url: admin_product_product_new class_name: name: admin.product.class_management url: admin_product_class_name class_category: name: admin.product.category_management url: admin_product_category product_tag: name: admin.product.tag_management url: admin_product_tag product_csv_import: name: admin.product.product_csv_upload url: admin_product_csv_import category_csv_import: name: admin.product.category_csv_upload url: admin_product_category_csv_import #商品管理に新規メニュー追加

Khai báo thêm như sau

sale: name: 売上 icon: fa-cube children: sale_master: name: 売上一覧 url: admin_sale

new_menuはメニューにつけるID名で、このメニューをアクティブにしたい時にtwigから指定します。

sale: là tên tùy ý đặt cho menu, tên này sẽ được dùng trong twig khi muốn active nó khi link được truy xuấtname: là tên được hiện thị trên menuurl: là tên của URL mà được đặt trong Route của controller

Giờ thì chúng ta đã hoàn thành cơ bản việc thêm một link vào menu quản lý của eccube rồi

Hình ảnh chúng ta nhìn thấy sẽ như dưới đây

Sưu tầm, tổng hợp từ

・ https://umebius.com/eccube/eccube4_create_new_admin_page

・https://umebius.com/eccube/ecceube4_insert_new_admin_menu

Từ khóa » File đuôi Twig