Tổng quan
Sonata Extra Bundle nâng cao Gói SonataPage bằng cách cung cấp khả năng quản lý đa trang web và đa ngôn ngữ đầy đủ. Tính năng này cho phép theo dõi và chuyển đổi giữa các bản dịch trang trên giao diện người dùng và hỗ trợ một chiến lược đa trang web linh hoạt.
Màn hình
- Chế độ xem danh sách:

- Xem chi tiết:

Cấu hình một multisite với nhiều ngôn ngữ
Tạo các trang web đa ngôn ngữ
Mỗi trang web có thể hỗ trợ các cài đặt vùng khác nhau. Sử dụng lệnh sau để tạo các trang web cần thiết:
bin/console sonata:page:create-site
Cấu hình nhanh cho các bài kiểm tra
Vì mục đích thử nghiệm, bạn có thể nhanh chóng thiết lập nhiều trang web bằng cách sử dụng các lệnh này:
TRUNCATE `page__page`;
TRUNCATE `page__site`;
TRUNCATE `page__snapshot`;
php bin/console sonata:page:create-site --enabled --name="Sonata Extra FR" --locale=fr_FR --host=fr.sonata-extra.localhost --relativePath=/fr --enabledFrom=now --enabledTo=- --default
php bin/console sonata:page:create-site --enabled --name="Sonata Extra EN" --locale=en --host=en.sonata-extra.localhost --relativePath=/en --enabledFrom=now --enabledTo=-
php bin/console sonata:page:create-site --enabled --name="Sonata Extra ES" --locale=es --host=es.sonata-extra.localhost --relativePath=/es --enabledFrom=now --enabledTo=-
php bin/console sonata:page:create-site --enabled --name="Sonata Extra IT" --locale=it --host=it.sonata-extra.localhost --relativePath=/it --enabledFrom=now --enabledTo=-
php bin/console sonata:page:create-site --enabled --name="Sonata Extra VN" --locale=vn --host=vn.sonata-extra.localhost --relativePath=/vn --enabledFrom=now --enabledTo=-
Cấu hình máy chủ ảo Apache
Cấu hình máy chủ ảo Apache của bạn như sau :
<VirtualHost *:80>
ServerName sonata-extra.localhost
ServerAlias fr.sonata-extra.localhost
ServerAlias en.sonata-extra.localhost
ServerAlias es.sonata-extra.localhost
ServerAlias it.sonata-extra.localhost
ServerAlias vn.sonata-extra.localhost
DocumentRoot /var/www/sonata-extra/public
<Directory /var/www/sonata-extra/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Truy cập các trang web
- Bảng điều khiển quản trị: Truy cập vào bảng điều khiển quản trị chính của trang tại
http://sonata-extra.localhost/admin/login. - Trang web theo địa phương: Xem nội dung trên http://
[fr,en,es,it,vn].sonata-extra.localhost/[fr,en,es,it,vn]/. Kết nối quản trị viên cho mỗi trang web có sẵn tại các URL tương ứng.
Cấu hình các tuyến đường và ảnh chụp nhanh
Thực hiện các lệnh sau để tạo các tuyến đường, sửa chúng cho Sonata Extra và tạo các ảnh chụp nhanh:
bin/console sonata:page:update-core-routes
bin/console sonata:extra:page-fix-route
bin/console sonata:page:create-snapshots
Cấu hình Sonata Page cho đa trang
Để kích hoạt hỗ trợ đa ngôn ngữ của Sonata Extra, hãy chỉnh sửa các cấu hình như sau :
Chỉnh sửa public/index.php
<?php
use App\Kernel;
use Sonata\PageBundle\Request\RequestFactory;
require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
return function (array $context) {
$kernel = new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
$request = RequestFactory::createFromGlobals('host_with_path');
return $kernel->handle($request);
};
sonata_page.yaml Thay đổi
### Configuration in sonata_page.yaml for multisite management
sonata_page:
multisite: host_with_path
Kết luận
Các chức năng quản lý đa trang và đa ngôn ngữ của Sonata Extra Bundle cung cấp một cách tiếp cận mạnh mẽ và linh hoạt để quản lý nội dung trên các địa điểm và trang khác nhau, phù hợp với các khả năng mạnh mẽ của SonataPageBundle.
Điều chỉnh ví dụ cho phù hợp với phiên bản đã cài đặt
Các ví dụ Symfony và Sonata vẫn gắn với các phiên bản được chỉ ra trong bài viết. Symfony 4.x và Symfony 6.2 không còn được duy trì: đối với một dự án hiện tại, hãy sử dụng một nhánh được duy trì và tài liệu tương ứng chính xác với các phụ thuộc của bạn.
php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle
Trước khi tiếp tục với mã, hãy kiểm tra các chữ ký, dịch vụ, tuyến đường và mẫu liên quan. Sau đó thêm một bài kiểm tra chức năng bao phủ quyền, mã HTTP và kết quả hiển thị.
Tham chiếu : phiên bản Symfony được hỗ trợ.