Tôi đang tìm kiếm một cách tiếp cận tốt với biểu mẫu thêm / cập nhật đã được chuẩn bị (theo mặc định) Magento User (người dùng mô-đun). Có thể truy cập biểu mẫu trong bảng quản trị theo đường dẫn này:
Hệ thống> Tất cả người dùng> [chọn_user]> tab chỉnh sửa chính của người dùng (Thông tin tài khoản)
Bây giờ tôi đang thử sử dụng di.xml trong mô-đun tùy chỉnh của mình, nơi tôi chỉ định các phụ thuộc: `
<preference for="Magento\User\Block\User\Edit\Tab\Main" type="Vendor_Name\Module_Name\Block\User\Edit\Tab\Main" />
<preference for="Magento\User\Block\Role\Grid\User" type="Vendor_Name\Module_Name\Block\Role\Grid\User" />
`
Đây là nội dung mà tôi đã tạo cho lớp Main.php
// @codingStiteriasIgnoreFile không gian tên Vendor_Name \ Module_Name \ Block \ User \ Edit \ Tab; sử dụng \ Magento \ Người dùng \ Chặn \ Người dùng \ Chỉnh sửa \ Tab \ Chính là Người dùngEditMainTab; sử dụng \ Magento \ Backend \ Block \ Template \ Context; sử dụng \ Magento \ Framework \ Registry; sử dụng \ Magento \ Framework \ Data \ FormFactory; sử dụng \ Magento \ Backend \ Model \ Auth \ Phiên; sử dụng \ Magento \ Framework \ Locale \ ListsInterface; lớp Chính mở rộng UserEditMainTab { chức năng công cộng __construct ( Bối cảnh $ bối cảnh, Đăng ký $ đăng ký, FormFactory $ formFactory, Phiên $ authSession, ListsInterface $ localeLists, mảng $ data = [] ) { cha mẹ :: __ xây dựng ($ bối cảnh, $ registry, $ formFactory, $ authSession, $ localeLists, $ data); } hàm được bảo vệ _prepareForm () { / ** @var $ model \ Magento \ Người dùng \ Người mẫu \ Người dùng * / $ model = $ this -> _ coreRegistry-> registry ('allow_user'); / ** @var \ Magento \ Framework \ Dữ liệu \ Biểu mẫu $ * / $ form = $ this -> _ formFactory-> create (); $ form-> setHtmlIdPrefix ('user_'); $ baseFieldset = $ form-> addFieldset ('base_fieldset', ['Legend' => __ ('Thông tin tài khoản __ TEST')]); if ($ model-> getUserId ()) { $ baseFieldset-> addField ('user_id', 'hidden', ['name' => 'user_id']); } khác { if (! $ model-> hasData ('is_active')) { $ model-> setIsActive (1); } } $ baseFieldset-> addField ( 'user_image', 'hình ảnh', [ 'tên' => 'user_image', 'nhãn' => __ ('Hình ảnh người dùng'), 'id' => 'user_image', 'tiêu đề' => __ ('Hình ảnh người dùng'), 'bắt buộc' => sai, 'ghi chú' => 'Cho phép loại hình ảnh: jpg, jpeg, png' ] ); $ baseFieldset-> addField ( 'tên tài khoản', 'bản văn', [ 'tên' => 'tên người dùng', 'nhãn' => __ ('Tên người dùng'), 'id' => 'tên người dùng', 'tiêu đề' => __ ('Tên người dùng'), 'bắt buộc' => đúng ] ); $ baseFieldset-> addField ( 'tên đầu tiên', 'bản văn', [ 'tên' => 'tên đầu tiên', 'nhãn' => __ ('Tên'), 'id' => 'tên đầu tiên', 'tiêu đề' => __ ('Tên'), 'bắt buộc' => đúng ] ); $ baseFieldset-> addField ( 'họ' 'bản văn', [ 'tên' => 'họ', 'nhãn' => __ ('Họ'), 'id' => 'họ', 'tiêu đề' => __ ('Họ'), 'bắt buộc' => đúng ] ); $ baseFieldset-> addField ( 'e-mail', 'bản văn', [ 'tên' => 'email', 'nhãn' => __ ('Email'), 'id' => 'customer_email', 'tiêu đề' => __ ('Email người dùng'), 'class' => 'email xác thực mục nhập bắt buộc', 'bắt buộc' => đúng ] ); $ isNewObject = $ model-> isObjectNew (); if ($ isNewObject) { $ passwordLabel = __ ('Mật khẩu'); } khác { $ passwordLabel = __ ('Mật khẩu mới'); } $ ConfirmLabel = __ ('Xác nhận mật khẩu'); $ this -> _ addPasswordFields ($ baseFieldset, $ passwordLabel, $ ConfirmLabel, $ isNewObject); $ baseFieldset-> addField ( 'interface_locale', 'lựa chọn', [ 'tên' => 'interface_locale', 'nhãn' => __ ('Địa điểm giao diện'), 'title' => __ ('Địa điểm giao diện'), 'giá trị' => $ this -> _ LocaleLists-> getTranslatedOptionLocales (), 'lớp' => 'chọn' ] ); if ($ this -> _ authSession-> getUser () -> getId ()! = $ model-> getUserId ()) { $ baseFieldset-> addField ( 'đang hoạt động', 'lựa chọn', [ 'tên' => 'is_active', 'nhãn' => __ ('Tài khoản này là'), 'id' => 'is_active', 'tiêu đề' => __ ('Trạng thái tài khoản'), 'class' => 'input-select', 'tùy chọn' => ['1' => __ ('Hoạt động'), '0' => __ ('Không hoạt động')] ] ); } $ baseFieldset-> addField ('user_roles', 'hidden', ['name' => 'user_roles', 'id' => '_user_roles']); $ currentUserVerifyingFieldset = $ form-> addFieldset ( 'current_user_verification_fieldset', ['Legend' => __ ('Xác minh danh tính người dùng hiện tại')] ); $ currentUserVerifyingFieldset-> addField ( tự :: CURRENT_USER_PASSWORD_FIELD, 'mật khẩu', [ 'tên' => tự :: CURRENT_USER_PASSWORD_FIELD, 'nhãn' => __ ('Mật khẩu của bạn'), 'id' => tự :: CURRENT_USER_PASSWORD_FIELD, 'title' => __ ('Mật khẩu của bạn'), 'class' => 'nhập văn bản xác thực-hiện tại-mật khẩu bắt buộc nhập', 'bắt buộc' => đúng ] ); $ data = $ model-> getData (); bỏ đặt ($ data ['password']); bỏ đặt ($ data [self :: CURRENT_USER_PASSWORD_FIELD]); $ form-> setValues ($ data); $ this-> setForm ($ form); trả về cha mẹ :: _ readyForm (); } }
và một số mã cho User.php
không gian tên Vendor_Name \ Module_Name \ Block \ Vai trò \ Lưới; sử dụng \ Magento \ Người dùng \ Chặn \ Vai trò \ Lưới \ Người dùng làm Vai tròGridUser; sử dụng \ Magento \ Backend \ Block \ Widget \ Grid \ Extended dưới dạng ExtendedGrid; lớp Người dùng mở rộng RoleGridUser { hàm được bảo vệ _prepareColumns () { cha mẹ :: _ readyCollection (); $ this-> addColumn ( 'user_image', [ 'tiêu đề' => __ ('Hình ảnh người dùng'), 'chiều rộng' => 5, 'căn chỉnh' => 'trái', 'sắp xếp' => đúng, 'chỉ mục' => 'user_image' ] ); trả về ExtendedGrid :: _ readyCollection (); } }
Nếu bây giờ bạn nhìn kỹ hơn thì tôi đang cố thêm một trường bằng hình ảnh của người dùng.
Thật không may, tôi không thấy bất kỳ thay đổi nào trong mặt trận quản trị. Tất nhiên, cột cần thiết đã được thêm bởi tập lệnh InstallSchema trước đó vào bảng ' admin_user '.
Nội dung của các thư mục trong một định dạng giống như cây:
Module_ Tên ├── Chặn Danh mục │ └── Sản phẩm │ └── Liên quanPosts.php ├── Vai trò │ └── Lưới User │ └── Người dùng.php └── Người dùng └── Chỉnh sửa └── Tab │ └── Main.php ├── composer.json ├── vv │ ├── di.xml Mô-đun ├── Cài đặt └── InstallSchema.php
Tôi đã làm gì sai?