추가 / 업데이트가 이미 기본적으로 준비된 Magento User (모듈 사용자) 양식으로 좋은 접근 방식을 찾고 있습니다. 다음 경로를 통해 관리자 패널에서 양식에 도달 할 수 있습니다.
시스템> 모든 사용자> [chosen_user]> 사용자의 기본 편집 탭 (계정 정보)
이제 의존성을 지정하는 사용자 정의 모듈에서 di.xml을 사용하려고합니다.
<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" />
`
이것은 이미 Main.php 클래스를 위해 만든 내용입니다
// @codingStandardsIgnoreFile
네임 스페이스 Vendor_Name \ Module_Name \ Block \ User \ Edit \ Tab;
\ Magento \ User \ Block \ User \ Edit \ Tab \ Main을 UserEditMainTab으로 사용하십시오.
\ Magento \ Backend \ Block \ Template \ Context를 사용하십시오.
\ Magento \ Framework \ Registry를 사용하십시오;
\ Magento \ Framework \ Data \ FormFactory를 사용하십시오.
\ Magento \ Backend \ Model \ Auth \ Session을 사용하십시오.
\ Magento \ Framework \ Locale \ ListsInterface를 사용하십시오.
Main 클래스는 UserEditMainTab을 확장합니다.
{
공공 함수 __construct (
문맥 $ context,
레지스트리 $ 레지스트리
FormFactory $ formFactory,
세션 $ authSession,
인터페이스 $ localeLists,
배열 $ data = []
) {
parent :: __ construct ($ context, $ registry, $ formFactory, $ authSession, $ localeLists, $ data);
}
보호 된 함수 _prepareForm ()
{
/ ** @var $ model \ 마 젠토 \ 사용자 \ 모델 \ 사용자 * /
$ model = $ this-> _ coreRegistry-> 레지스트리 ( 'permissions_user');
/ ** @var \ Magento \ Framework \ Data \ Form $ form * /
$ form = $ this-> _ formFactory-> create ();
$ form-> setHtmlIdPrefix ( 'user_');
$ baseFieldset = $ form-> addFieldset ( 'base_fieldset', [ 'legend'=> __ ( '계정 정보 __ 테스트')]);
if ($ model-> getUserId ()) {
$ baseFieldset-> addField ( 'user_id', 'hidden', [ 'name'=> 'user_id']);
} else {
if (! $ model-> hasData ( 'is_active')) {
$ model-> setIsActive (1);
}
}
$ baseFieldset-> addField (
'user_image',
'영상',
[
'name'=> 'user_image',
'label'=> __ ( '사용자 이미지'),
'id'=> 'user_image',
'title'=> __ ( '사용자 이미지'),
'필수'=> 거짓,
'note'=> '이미지 유형 허용 : jpg, jpeg, png'
]
);
$ baseFieldset-> addField (
'사용자 이름',
'본문',
[
'name'=> '사용자 이름',
'label'=> __ ( '사용자 이름'),
'id'=> '사용자 이름',
'title'=> __ ( '사용자 이름'),
'필수'=> true
]
);
$ baseFieldset-> addField (
'이름',
'본문',
[
'name'=> '이름',
'label'=> __ ( '이름'),
'id'=> '이름',
'title'=> __ ( '이름'),
'필수'=> true
]
);
$ baseFieldset-> addField (
'성',
'본문',
[
'name'=> '성',
'label'=> __ ( '성' '),
'id'=> '성',
'title'=> __ ( '성' '),
'필수'=> true
]
);
$ baseFieldset-> addField (
'이메일',
'본문',
[
'name'=> '이메일',
'label'=> __ ( '이메일'),
'id'=> 'customer_email',
'title'=> __ ( '사용자 이메일'),
'class'=> '필수 항목 확인 이메일',
'필수'=> true
]
);
$ isNewObject = $ model-> isObjectNew ();
if ($ isNewObject) {
$ passwordLabel = __ ( '비밀번호');
} else {
$ passwordLabel = __ ( '새 비밀번호');
}
$ confirmationLabel = __ ( '비밀번호 확인');
$ this-> _ addPasswordFields ($ baseFieldset, $ passwordLabel, $ confirmationLabel, $ isNewObject);
$ baseFieldset-> addField (
'interface_locale',
'고르다',
[
'name'=> 'interface_locale',
'label'=> __ ( '인터페이스 로캘'),
'title'=> __ ( '인터페이스 로캘'),
'values'=> $ this-> _ LocaleLists-> getTranslatedOptionLocales (),
'class'=> '선택'
]
);
if ($ this-> _ authSession-> getUser ()-> getId ()! = $ model-> getUserId ()) {
$ baseFieldset-> addField (
'활성',
'고르다',
[
'name'=> 'is_active',
'label'=> __ ( '이 계정은'),
'id'=> 'is_active',
'title'=> __ ( '계정 상태'),
'class'=> '입력 선택',
'options'=> [ '1'=> __ ( 'Active'), '0'=> __ ( '비활성')]
]
);
}
$ baseFieldset-> addField ( 'user_roles', 'hidden', [ 'name'=> 'user_roles', 'id'=> '_user_roles']);
$ currentUserVerificationFieldset = $ form-> addFieldset (
'current_user_verification_fieldset',
[ 'legend'=> __ ( '현재 사용자 신원 확인')]
);
$ currentUserVerificationFieldset-> addField (
self :: CURRENT_USER_PASSWORD_FIELD,
'암호',
[
'name'=> self :: CURRENT_USER_PASSWORD_FIELD,
'label'=> __ ( '귀하의 비밀번호'),
'id'=> self :: CURRENT_USER_PASSWORD_FIELD,
'title'=> __ ( '귀하의 비밀번호'),
'class'=> '입력 텍스트 유효성 검사 현재 암호 필요 입력',
'필수'=> true
]
);
$ data = $ model-> getData ();
unset ($ data [ '암호']);
설정 해제 ($ data [self :: CURRENT_USER_PASSWORD_FIELD]);
$ form-> setValues ($ data);
$ this-> setForm ($ form);
부모 반환 :: _ prepareForm ();
}
}
User.php에 대한 코드
네임 스페이스 Vendor_Name \ Module_Name \ Block \ Role \ Grid;
\ Magento \ User \ Block \ Role \ Grid \ User를 RoleGridUser로 사용하십시오.
\ Magento \ Backend \ Block \ Widget \ Grid \ ExtendedGrid로 사용하십시오.
User 클래스는 RoleGridUser를 확장합니다
{
보호 된 함수 _prepareColumns ()
{
부모 :: _ prepareCollection ();
$ this-> addColumn (
'user_image',
[
'header'=> __ ( '사용자 이미지'),
'width'=> 5,
'align'=> '왼쪽',
'sortable'=> true,
'index'=> 'user_image'
]
);
ExtendedGrid :: _ prepareCollection ()을 반환합니다.
}
}
좀 더 자세히 살펴보면 사용자 이미지가있는 필드를 추가하려고합니다.
불행히도, 나는 admin front에 어떤 변화도 보이지 않습니다. 물론 필요한 열은 InstallSchema 스크립트에 의해 ' admin_user '테이블 에 추가되었습니다 .
트리와 같은 형식의 디렉토리 내용 :
Module_Name ├── 차단 │ ├── 카탈로그 │ │ └── 제품 │ │ └── RelatedPosts.php │ ├── 역할 │ │ └── 그리드 │ │ └── User.php │ └── 사용자 │ └── 편집 │ └── 탭 │ └── Main.php ├── composer.json ├── 등 │ ├── di.xml │ └── module.xml ├── 설정 └── InstallSchema.php
내가 뭘 잘못 했어?