추가 / 업데이트가 이미 기본적으로 준비된 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
내가 뭘 잘못 했어?