Nếu bạn đã từng sử dụng SonataPage và SonataMedia, bạn sẽ biết chúng mạnh mẽ như thế nào trong việc quản lý nội dung và phương tiện trên trang web của bạn. Trong bài viết này, tôi sẽ hướng dẫn bạn cách mở rộng những công cụ này để dễ dàng thêm các thẻ Open Graph vào trang của bạn nhằm nâng cao khả năng chia sẻ trên các mạng xã hội. Tại sao lại sử dụng thẻ Open Graph? Thẻ Open Graph (OG) là các thẻ meta mà bạn có thể thêm vào trang của mình để xác định tiêu đề, mô tả, hình ảnh và thông tin khá...
Trong bài viết này, chúng ta sẽ học cách thêm một bảng điều khiển quản trị không cần đối tượng trong dự án Symfony 6.2 sử dụng Sonata Admin 5. Cơ sở dự án của chúng ta sẽ là tạo một giao diện tải lên tệp đơn giản. Nhưng bạn có thể tạo bất kỳ ứng dụng nào. Bao gồm thêm văn bản đơn giản. 1. Cài đặt Sonata Admin Bundle Nếu bạn chưa cài đặt Sonata Admin, bạn có thể làm điều đó với composer:
composer require sonata-project/admin-bundle
Chúng tôi mời bạn truy cập trang web của chúng tôi để cà...
Theo bài viết của Thomas Bourdin SYMFONY / SONATA: THÊM CHỨC NĂNG NHÂN BẢN VÀO CRUD, chúng tôi sẽ chỉ bạn cách thêm các hành động tùy chỉnh vào giao diện một cách đơn giản. Trên Bảng điều khiển:
Nhưng chúng tôi cũng sẽ xem xét cách tùy chỉnh đơn giản và chung chung các hành động tùy chỉnh của danh sách, tiêu đề CRUD của bạn và cuối cùng là cách thêm hành động cho xử lý hàng loạt. Với ví dụ của tôi, tôi bắt đầu với một bảng đơn giản gọi là Title là entity ở đây. Không cần thiết cho bạn...
Nếu bạn có nhu cầu cụ thể để chuyển đổi dữ liệu giữa biểu mẫu và quá trình ghi của thực thể của mình và nghĩ rằng mã chuyển đổi này nên được đặt trong một dịch vụ vì nó có ý nghĩa hơn, bạn có thể sử dụng dataMapper bằng cách tận dụng tính năng tiêm phụ thuộc do Symfony cung cấp. Nhưng làm thế nào để triển khai nó? Một lưu ý nhỏ về DataMapper. Nếu chúng ta đồng ý với tài liệu chính thức của Symfony về DataMapper và DataTransformer, một dataMapper có trách nhiệm đọc và viết một đối tượng (một t...
Trong ví dụ này, chúng ta sẽ xem xét trường hợp cụ thể của một giao diện đơn giản bao gồm nhiều yếu tố. Chúng ta đã chọn sử dụng bảng "Dự án" trong đó chúng ta sẽ gán tài liệu. Vì vậy, đối với một dự án, chúng ta có thể gán nhiều tài liệu. Và để thuận tiện trong quản lý, chúng ta sẽ đảm bảo rằng chúng ta có thể quản lý giao diện lồng nhau trực tiếp trong giao diện chỉnh sửa của dự án của mình.Chúng ta cần tạo sơ đồ. Đầu tiên, chúng ta nhập sơ đồ hiện tại của mình vào MysqlWorbench bằng cách s...
Chúng tôi đã thấy trong một bài viết trước cách cài đặt Symfony 6 + Sonata Admin 5 với quản lý người dùng và quản lý media. Chúng tôi sẽ tiếp tục cài đặt này với cấu hình ngôn ngữ và múi giờ. Chúng tôi sẽ cài đặt intlBundle giúp quản lý hiển thị theo địa phương.
php8.1 composer.phar require sonata-project/intl-bundle
Chúng tôi nhân cơ hội này để thêm trường múi giờ và ngôn ngữ vào người dùng.Để làm điều này, chúng tôi sẽ mở rộng userBundle và thêm trường vào trong admin. Chúng tôi mở rộ...
Đây là các lệnh để khởi tạo một dự án Symfony với quản trị an toàn. Để chạy Symfony 6, chúng ta cần cài đặt php8.0 hoặc php8.1 Đối với php8.0
sudo apt-get install php8.0-cli libapache2-mod-php8.0 php8.0-common php8.0-opcache php8.0-igbinary php8.0-imagick php8.0-msgpack php8.0-readline php8.0-memcached php8.0-xml php8.0-mbstring php8.0-gd php8.0-mysql php8.0-curl php8.0-intl php8.0-memcache php8.0-memcached memcached libapache2-mod-php8.0 php8.0-zip php8.0-mysql
Đối với php8.1
su...
Ở đây chúng ta sẽ xem cách tạo một giao diện thứ hai trong khi thực thể đang được sử dụng trong giao diện CRUD.Vấn đề với các giao diện tự động tạo là chúng sử dụng tên của thực thể để xây dựng các tuyến đường.Nếu chúng ta cấu hình một giao diện thứ hai với một thực thể đã được sử dụng, chúng ta sẽ kết thúc với cùng một tuyến đường như cái đầu tiên.Để giải quyết vấn đề này, chúng ta sẽ sử dụng hai tham số này trong lớp quản trị của mình để ghi đè các giá trị mặc định.Giả sử chúng ta đang sử d...
Chúng ta sẽ xem cách thiết lập giao diện quản trị đa ngôn ngữ với nút chọn ngôn ngữ (bộ chuyển đổi ngôn ngữ).Cài đặt translationBundle
composer require sonata-project/translation-bundle
bin/console assets:install
Bộ chuyển đổi ngôn ngữ yêu cầu một bộ lọc twig cụ thể.Nếu không, bạn sẽ nhận được lỗi như:Unknown "language_name" filter.Sau đó, bạn cần cài đặt hai gói này
composer require twig/intl-extra
composer require twig/extra-bundle
bin/console cache:clear
Chúng ta thêm cấu hình mặc định
# ...
Chúng ta sẽ xem cách quản lý giao diện quản trị kết nối với nhiều máy chủ.Trong ví dụ của chúng ta, chúng ta đã thiết lập một máy chủ MySQL mặc định quản lý giao diện quản trị của chúng ta. Người dùng, phương tiện truyền thông, v.v.Và chúng ta đã thiết lập một máy chủ PostgreSQL chứa một bảng mà chúng ta muốn quản lý.Chúng ta có thể thêm bao nhiêu máy chủ tùy ý.Máy chủ MySQL của chúng taChúng ta đã thiết lập truyền thống một phiên bản Sonata Symfony mặc định với kết nối MySQL cổ điển. Vì vậy,...
Chúng ta sẽ xem cách khai thác kiểu trường Jsonb từ PostgreSQL trong một giao diện được tạo bởi Sonata.Chúng ta bắt đầu với giả định rằng bạn đã nắm vững các khái niệm cơ bản của Symfony, Sonata, và PostgreSQL.Đầu tiên, hãy tạo một bảng đơn giản trong PostgreSQL sẽ chứa trường Jsonb.
CREATE SEQUENCE public.table1_id_seq;
CREATE TABLE public.table1 (
id integer DEFAULT nextval('public.table1_id_seq'::regclass) NOT NULL,
var1 character varying(250),
v...
Chúng ta sẽ xem làm thế nào để tạo một loại trường tùy chỉnh. Trong ví dụ của chúng ta, chúng ta muốn một trường có cùng cách hiển thị như trường MoneyType nhưng chúng ta có thể thêm bất kỳ hậu tố nào, vì trường tiền tệ chỉ chấp nhận các loại tiền tệ. Tuy nhiên, trong dự án của chúng ta, chúng ta muốn sử dụng kilogram, tháng hoặc thậm chí là kilômét. Nói chung, một loạt các loại dữ liệu có thể có.Chúng ta bắt đầu bằng cách tạo lớp Type của chúng ta:
<?php
// src/Form/Type/NumberSuffixType...
Một trong những nhu cầu thường xuyên của dự án web là cần có các tham số toàn cục cho ứng dụng của bạn. Thông thường, chúng được lưu trữ trong một tệp yml và đó là tất cả những gì bạn cần. Nhưng mọi thứ trở nên phức tạp khi khách hàng yêu cầu được kiểm soát chúng.Cho họ quyền truy cập FTP/SSH để chỉnh sửa chúng? Không, tuyệt đối không. Đặc biệt nếu nhiệm vụ này được giao cho một thực tập sinh.Bạn cần phải cung cấp cho họ một giao diện quản trị với một biểu mẫu để có thể chỉnh sửa các tham số ...
Trong bài viết này, chúng ta sẽ xem cách tạo một REST API với FOS/RestBundle, bao gồm xác thực, và công cụ tạo tài liệu giống như Swagger.
Danh sách các gói cần thiết:friendsofsymfony/rest-bundle: Cung cấp một bộ công cụ giúp phát triển API RESTfulhttps://github.com/FriendsOfSymfony/FOSRestBundlejms/serializer-bundle: Cho phép việc chuẩn hóa đối tượng.https://packagist.org/packages/jms/serializer-bundlelexik/jwt-authentication-bundle: Quản lý token web JSON.https://github.com/lexik/LexikJWTA...
Sonata là một bộ các bundle dành cho Symfony 4. Một trong số đó cho phép quản lý nội dung theo cách giống như WordPress.Trên internet có rất ít tài liệu hướng dẫn, và có lý do cho điều đó, quá trình cài đặt có lỗi, và ít người đã đối mặt với trình theo dõi lỗi trên GitHub, đã bị nói thẳng là phải đọc kỹ tài liệu.Chấp nhận thất bại như vậy không phải là phong cách của tôi.Dưới đây là cách cài đặt và cấu hình Sonata-Page-Bundle, với quá trình cài đặt chính thức, và cách khắc phục những lỗi khốn...
Giao diện mặc định của Sonata là CRUDs. Điều này rất hữu ích (nếu không, chúng ta sẽ không sử dụng nó). Nhưng một hệ thống quản trị không chỉ gồm CRUDs. Ở đây chúng ta sẽ xem cách tạo một trang xuất dữ liệu đơn giản, bằng cách loại bỏ các giao diện mặc định và tạo ra giao diện riêng của chúng ta để quản lý nút xuất dữ liệu.
1 – Thêm thư viện xuất dữ liệu
composer require sonata-project/exporter
Sau đó, chúng ta cần thêm một tệp cấu hình cho công cụ xuất dữ liệu ...
Chúng ta sẽ xem cách xây dựng một giao diện quản trị bao gồm nhiều bảng có quan hệ Many2Many.Hãy xem lại ví dụ của chúng ta về giao diện nhiều/nhiều có sẵn tại đâyChúng ta có một bảng khu vực, bao gồm nhiều yếu tố từ bảng phòng ban. Trên những phòng ban này, chúng ta có các cơ quan.Để hoàn thiện, và để ý nghĩa cho chuỗi dữ liệu này, chúng ta thêm một bảng zx_credential, đại diện cho nhân viên bán hàng.Dưới đây là chuỗi dữ liệu của chúng ta: Nhân viên bán hàng->Khu vực->Phòng ban->Cơ ...
Chúng tôi sẽ phát triển ở đây tất cả các thao tác để xây dựng giao diện nhiều đến nhiều thông qua Sonata.Chúng tôi sẽ lấy ví dụ về quản lý khu vực với kết nối qua các bộ phận. Mỗi khu vực như vậy được cấu tạo từ nhiều kết nối với bảng bộ phận.Trong MysqlWorkbench, nó trông như thế này:
Để tạo các thực thể, chúng tôi sử dụng lệnh sau:
php bin/console doctrine:mapping:import "App\Entity" annotation --path=src/Entity
Tiếp theo, chúng...
Ngắn gọn, chúng tôi muốn tạo một giao diện CRUD, 1N, với đó, khi chúng tôi đang chỉnh sửa một mục, chúng tôi thêm một bảng điều khiển để quản lý tất cả các mục con.Tại đây chúng tôi có một bảng wtype, với một bảng wconf chứa một loạt bản ghi liên kết với một mục wtype.
Giống như ví dụ triển khai của sortable với kéo và thả ( có sẵn tại đây ) chúng tôi sẽ sử dụng các thành phần sau:pixassociates/sortable-behavior-bundle và stof/doctrine-extensions-bundleDo đó bạn sẽ phải tạo ...