Magento 2 Magento_User প্রশাসক ফর্মটিতে নতুন ক্ষেত্র যুক্ত করুন


11

আমি ইতিমধ্যে প্রস্তুত (পূর্বনির্ধারিত) ম্যাজেন্টো ব্যবহারকারীর (মডিউল-ব্যবহারকারী) ফর্মটি যুক্ত / আপডেট সহ একটি ভাল পদ্ধতির সন্ধান করছি। এই পাথ দিয়ে অ্যাডমিন প্যানেলে ফর্মটি পৌঁছানো যেতে পারে:

সিস্টেম> সমস্ত ব্যবহারকারী> [নির্বাচিত_ ব্যবহারকারী]> ব্যবহারকারীর প্রধান সম্পাদনা ট্যাব (অ্যাকাউন্ট তথ্য)

এখন আমি আমার কাস্টম মডিউলটিতে 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" />

`

এটি ইতিমধ্যে মেইন.এফপি ক্লাসের জন্য তৈরি করা সামগ্রী

// @ কোডিং স্ট্যান্ডার্ডসআইগনফোর করুন

নেমস্পেস ভেন্ডর_নাম \ মডিউল_নাম \ ব্লক \ ব্যবহারকারী \ সম্পাদনা করুন \ ট্যাব;

E ম্যাজেন্টো \ ব্যবহারকারীর \ ব্লক \ ব্যবহারকারী \ সম্পাদনা \ ট্যাব \ প্রধানকে ইউজারএডিটমেনট্যাব হিসাবে ব্যবহার করুন;
\ ম্যাজেন্টো \ ব্যাকএন্ড \ ব্লক \ টেমপ্লেট \ প্রসঙ্গ ব্যবহার করুন;
\ Magento \ ফ্রেমওয়ার্ক \ রেজিস্ট্রি ব্যবহার করুন;
\ ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ ডেটা \ ফর্মফ্যাক্টরি ব্যবহার করুন;
\ ম্যাজেন্টো \ ব্যাকএন্ড \ মডেল \ এথ \ সেশন ব্যবহার করুন;
\ ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ লোকেল \ তালিকাগুলি অন্তর্ভুক্ত করুন;

ক্লাস মেইন ইউজারএডিটমেনট্যাব প্রসারিত করে
{
    পাবলিক ফাংশন __ কনস্ট্রাক্ট (
        প্রসঙ্গ $ প্রসঙ্গ,
        রেজিস্ট্রি $ রেজিস্ট্রি,
        ফর্মফ্যাক্টরি $ ফর্ম কারখানা,
        অধিবেশন uth
        তালিকার অন্তর্ভুক্ত $ স্থানীয় তালিকা,
        অ্যারে $ ডেটা = []
    ) {
        প্যারেন্ট :: __ গঠন ($ প্রসঙ্গ, $ রেজিস্ট্রি, $ ফর্ম কারখানা, $ authSession, $ স্থানীয় তালিকা, $ ডেটা);
    }

    সুরক্ষিত ফাংশন
    {
        / ** @var $ মডেল \ Magento \ ব্যবহারকারী \ মডেল \ ব্যবহারকারী * /
        $ মডেল = $ এটি -> _ কোরআরেজিস্ট্রি-> রেজিস্ট্রি ('অনুমতি_ইউসার');

        / ** @var \ Magento \ ফ্রেমওয়ার্ক \ ডেটা \ ফর্ম $ ফর্ম * /
        $ ফর্ম = $ এটি -> _ ফর্ম ফ্যাক্টরি-> তৈরি ();
        $ Form-> setHtmlIdPrefix ( 'user_');

        $ বেসফিল্ডসেট = $ ফর্ম-> অ্যাডফিল্ডসেট ('বেস_ফিল্ডসেট', ['কিংবদন্তি' => __ ('অ্যাকাউন্টের তথ্য __ টেস্ট')]));

        যদি ($ মডেল-> getUserId ()) {
            $ বেসফিল্ডসেট-> অ্যাডফিল্ড ('ইউজার_আইডি', 'লুকানো', ['নাম' => 'ইউজার_আইডি']);
        } অন্য {
            যদি (! $ মডেল-> hasData ('is_active')) {
                $ Model-> setIsActive (1);
            }
        }

        $ BaseFieldset-> addField (
            'User_image',
            'চিত্র',
            [
                'name' => 'user_image',
                'লেবেল' => __ ('ব্যবহারকারীর চিত্র'),
                'id' => 'ব্যবহারকারীর চিত্র',
                'শিরোনাম' => __ ('ব্যবহারকারীর চিত্র'),
                'প্রয়োজনীয়' => মিথ্যা,
                'নোট' => 'চিত্রের প্রকারের অনুমতি দিন: jpg, jpeg, png'
            ]
        );

        $ BaseFieldset-> addField (
            'ব্যবহারকারীর নাম',
            'টেক্সট',
            [
                'নাম' => 'ব্যবহারকারীর নাম',
                'লেবেল' => __ ('ব্যবহারকারীর নাম'),
                'id' => 'ব্যবহারকারীর নাম',
                'শিরোনাম' => __ ('ব্যবহারকারীর নাম'),
                'প্রয়োজনীয়' => সত্য
            ]
        );

        $ BaseFieldset-> addField (
            'নামের প্রথম অংশ',
            'টেক্সট',
            [
                'নাম' => 'প্রথম নাম',
                'লেবেল' => __ ('প্রথম নাম'),
                'আইডি' => 'প্রথম নাম',
                'শিরোনাম' => __ ('প্রথম নাম'),
                'প্রয়োজনীয়' => সত্য
            ]
        );

        $ BaseFieldset-> addField (
            'নামের শেষাংশ',
            'টেক্সট',
            [
                'নাম' => 'শেষ নাম',
                'লেবেল' => __ ('শেষ নাম'),
                'আইডি' => 'পদবি',
                'শিরোনাম' => __ ('শেষ নাম'),
                'প্রয়োজনীয়' => সত্য
            ]
        );

        $ BaseFieldset-> addField (
            'ইমেল',
            'টেক্সট',
            [
                'নাম' => 'ইমেল',
                'লেবেল' => __ ('ইমেল'),
                'id' => 'গ্রাহক_-ইমেল',
                'শিরোনাম' => __ ('ব্যবহারকারী ইমেল'),
                'শ্রেণি' => 'প্রয়োজনীয়-এন্ট্রি বৈধতা-ইমেল',
                'প্রয়োজনীয়' => সত্য
            ]
        );

        $ isNewObject = $ মডেল-> isObjectNew ();
        যদি ($ নিউইউবজেক্ট) {
            $ পাসওয়ার্ড লেবেল = __ ('পাসওয়ার্ড');
        } অন্য {
            $ পাসওয়ার্ড লেবেল = __ ('নতুন পাসওয়ার্ড');
        }
        $ নিশ্চিতকরণ লেবেল = __ ('পাসওয়ার্ড নিশ্চিতকরণ');
        $ এটি -> _ অ্যাডপাসওয়ার্ডফিল্ডস ($ বেসফিল্ডসেট, $ পাসওয়ার্ড লেবেল, $ কনফার্মেশনলবেল, $ ইসনিউবজেক্ট);

        $ BaseFieldset-> addField (
            'Interface_locale',
            'নির্বাচন',
            [
                'নাম' => 'ইন্টারফেস_লোকালে',
                'লেবেল' => __ ('ইন্টারফেস লোকাল'),
                'শিরোনাম' => __ ('ইন্টারফেস লোকাল'),
                'মান' => $ এটি -> _ লোকাললিস্ট-> getTranslatedOptionLocales (),
                'শ্রেণী' => 'নির্বাচন'
            ]
        );

        যদি ($ এটি -> _ লেখক সেশন-> getUser () -> getId ()! = $ মডেল-> getUserId ())
            $ BaseFieldset-> addField (
                'সক্রিয়',
                'নির্বাচন',
                [
                    'নাম' => 'is_active',
                    'লেবেল' => __ ('এই অ্যাকাউন্টটি'),
                    'id' => 'is_active',
                    'শিরোনাম' => __ ('অ্যাকাউন্টের স্থিতি'),
                    'শ্রেণি' => 'ইনপুট-নির্বাচন',
                    'বিকল্প' => ['1' => __ ('সক্রিয়'), '0' => __ ('নিষ্ক্রিয়')]
                ]
            );
        }

        $ বেসফিল্ডসেট-> অ্যাডফিল্ড ('ইউজার_রোলেস', 'লুকানো', ['নাম' => 'ইউজার_রোলেস', 'আইডি' => '_user_roles']);

        $ বর্তমান ইউজারভেদীকরণফিল্ডসেট = $ ফর্ম-> অ্যাডফিল্ডসেট (
            'Current_user_verification_fieldset',
            ['কিংবদন্তি' => __ ('বর্তমান ব্যবহারকারীর পরিচয় যাচাইকরণ')]
        );
        $ CurrentUserVerificationFieldset-> addField (
            স্ব :: CURRENT_USER_PASSWORD_FIELD,
            'পাসওয়ার্ড',
            [
                'নাম' => স্ব :: CURRENT_USER_PASSWORD_FIELD,
                'লেবেল' => __ ('আপনার পাসওয়ার্ড'),
                'id' => স্ব :: CURRENT_USER_PASSWORD_FIELD,
                'শিরোনাম' => __ ('আপনার পাসওয়ার্ড'),
                'শ্রেণি' => 'ইনপুট-পাঠ্যকে বৈধ করে তোলা - বর্তমান-পাসওয়ার্ডের প্রয়োজনীয়-এন্ট্রি',
                'প্রয়োজনীয়' => সত্য
            ]
        );

        $ ডেটা = $ মডেল-> getData ();
        সেট না ($ ডেটা [ 'পাসওয়ার্ড']);
        সেট না ($ ডেটা [স্ব :: CURRENT_USER_PASSWORD_FIELD]);
        $ Form-> setValues ​​($ তথ্য);

        $ This-> setForm ($ ফর্ম);

        রিটার্ন প্যারেন্ট :: _ রেডিফর্ম ();
    }
}

এবং ব্যবহারকারীর জন্য কিছু কোড। php

নেমস্পেস ভেন্ডর_নাম \ মডিউল_নাম \ ব্লক \ ভূমিকা \ গ্রিড;

le ম্যাজেন্টো \ ব্যবহারকারী \ অবরুদ্ধ \ ভূমিকা \ গ্রিড \ ব্যবহারকারীকে ভূমিকাগ্রিড ব্যবহারকারী হিসাবে ব্যবহার করুন;
\ ম্যাজেন্টো \ ব্যাকএন্ড \ ব্লক \ উইজেট \ গ্রিড use এক্সটেন্ডেডগ্রিড হিসাবে বর্ধিত;

শ্রেণীর ব্যবহারকারী RoleGridUser প্রসারিত করে
{
    সুরক্ষিত ফাংশন
    {
        পিতা বা মাতা ::: _ prepareCollection ();

        $ This-> addColumn (
            'User_image',
            [
                'শিরোনাম' => __ ('ব্যবহারকারীর চিত্র'),
                'প্রস্থ' => 5,
                'align' => 'বাম',
                'বাছাইযোগ্য' => সত্য,
                'সূচক' => 'ব্যবহারকারীর চিত্র'
            ]
        );

        রিটার্ন এক্সটেন্ডেডগ্রিড :: _ রেডি কলোকেশন ();
    }
}

আপনি যদি আরও ঘুরে দেখুন তবে ইতিমধ্যে যে আমি ব্যবহারকারীর চিত্র সহ একটি ক্ষেত্র যুক্ত করার চেষ্টা করছি।

দুর্ভাগ্যক্রমে, আমি অ্যাডমিনের সামনে কোনও পরিবর্তন দেখতে পাচ্ছি না। অবশ্যই, প্রয়োজনীয় কলামটি ইনস্টলস্কেমার স্ক্রিপ্ট দ্বারা এর আগে ' অ্যাডমিন_উজার ' সারণিতে যুক্ত করা হয়েছিল।

গাছের মতো বিন্যাসে ডিরেক্টরিগুলির বিষয়বস্তু:

Module_Name
├── ব্লক
। ├── ক্যাটালগ
। │ └── পণ্য
P │ └── সম্পর্কিতপোস্ট.এফপি
│ le ভূমিকা
Rid │ └── গ্রিড
। │ └── User.php
ব্যবহারকারী
। └── সম্পাদনা করুন
। └── ট্যাব
।। Main.php
├── রচনাশক্তি
। ইত্যাদি
।। Di.xML
। └── মডিউল.এক্সএমএল
├── সেটআপ
    └── ইনস্টলশ্মিমা.এফপি

আমি কি ভুল করছি?


উপরের সমাধানটি দুর্দান্ত তবে মানগুলি যুক্ত ক্ষেত্রগুলিতে সেট করা নেই..এখানে আমাদের আরও কিছু করা দরকার। আমরা মূলত পর্যালোচনা ফর্মটি ওভাররাইড করছি। অগ্রিম ধন্যবাদ ..
গ্রেট ইন্ডিয়ান ব্রেন

উত্তর:


24

চিত্র ক্ষেত্র যুক্ত করার জন্য, আপনি প্লাগইন ব্যবহার করতে চেষ্টা করতে পারেন এবং সর্বদা পুরো ক্লাসটিকে ওভাররাইট এড়াতে চেষ্টা করতে পারেন।

বিক্রেতা / মডিউল, / etc / adminhtml / di.xml


<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\User\Block\User\Edit\Tab\Main">
        <plugin name="sr_stackexchange_user_form" type="Vendor\Module\Plugin\Block\Adminhtml\User\Edit\Tab\Main" sortOrder="1"/>
    </type>
</config>

বিক্রেতা / মডিউল / প্লাগইন / ব্লক / Adminhtml / ব্যবহারকারী / সম্পাদনা / ট্যাব / Main.php


namespace Vendor\Module\Plugin\Block\Adminhtml\User\Edit\Tab;

class Main
{
    /**
     * Get form HTML
     *
     * @return string
     */
    public function aroundGetFormHtml(
        \Magento\User\Block\User\Edit\Tab\Main $subject,
        \Closure $proceed
    )
    {
        $form = $subject->getForm();
        if (is_object($form)) {
            $fieldset = $form->addFieldset('admin_user_image', ['legend' => __('User Image')]);
            $fieldset->addField(
                'user_image',
                'image',
                [
                    'name' => 'user_image',
                    'label' => __('Image'),
                    'id' => 'user_image',
                    'title' => __('Image'),
                    'required' => false,
                    'note' => 'Allow image type: jpg, jpeg, png'
                ]
            );

            $subject->setForm($form);
        }

        return $proceed();
    }
}

ক্যাশে সাফ করুন।


আরে সোহেল, আপনার প্রতিক্রিয়াটির জন্য অনেক ধন্যবাদ! আমি যা অর্জন করতে চাই তা ঠিক বলে মনে হচ্ছে :) স্থানীয়ভাবে এই কোডটি ব্যবহার করার সাথে সাথে আমি আপনাকে প্রতিক্রিয়া জানাব। যাইহোক, আমি দেখেছি যে আপনি নতুন ফিল্ডসেট তৈরি করেছেন এবং আমি ভাবতে শুরু করি যে এটি ইতিমধ্যে বিদ্যমান একটি, যেমন 'বেস_ফিল্ডসেট' আপডেট করা সম্ভব কিনা আপনি কী ভাবেন? এছাড়াও, আমি কৌতূহলী, এই প্লাগইন পদ্ধতির আপডেটও নিয়ন্ত্রণকারীদের কভার করা যায়? আমাকে ভবিষ্যতে এখানে কিছু /module-user/Controller/Adminhtml/User/Save.phpচিন্তাভাবনা আপডেট করতে হবে: - 'অ্যাডমিন_উজার' সারণীতে চিত্রের পথ দিয়ে স্ট্রিং সংরক্ষণ করুন। অনেক প্রশ্নের জন্য দুঃখিত। আপনার সাহায্য তারিফ করা! চিয়ার্স!
রব

ঠিক আছে, একটি নিয়ামকের জন্য প্লাগইন ব্যবহার করা সম্ভব, তবে আমার ক্ষেত্রে এটি যথেষ্ট ছিল না। যাইহোক, আপনার পরামর্শগুলি আমাকে সমস্যার সমাধান করতে সহায়তা করে। আবার আপনাকে ধন্যবাদ!
রব

উপরের সমাধানটি দুর্দান্ত তবে মানগুলি যুক্ত ক্ষেত্রগুলিতে সেট করা নেই..এখানে আমাদের আরও কিছু করা দরকার। আমরা মূলত পর্যালোচনা ফর্মটি ওভাররাইড করছি। অগ্রিম ধন্যবাদ ..
গ্রেট ইন্ডিয়ান ব্রেইন

আমি অ্যাডমিন ব্যবহারকারী ফর্মের প্রশাসনিক ব্যবহারকারীর সারণিতে কীভাবে নতুন ক্ষেত্রের মান সংরক্ষণ করতে আগ্রহী তা জানতে আগ্রহী। আপনি কি এটির / Module-user/Controller/Adminhtml/User/Save.php নিয়ামককে প্রসারিত / ওভাররাইডিং সমাধান করেছেন?
হলারন

@ সোহেল রানা, নির্বাচিত মাঠ কোথায় দেখাবে না? বা কীভাবে আমরা এখানে বর্তমান ব্যবহারকারীর আইডি পেতে পারি?
সাগরপঞ্চল

2

কিছু গবেষণা পরে এই জন্য একটি সমাধান পেয়েছে

অ্যাডফিল্ড পদ্ধতিতে নতুন সম্পত্তি "মান" যুক্ত করুন

আপনার প্রয়োজনীয় মান সহ উদাহরণ দেখুন:

        $fieldset->addField(
            'user_image',
            'image',
            [
                'name' => 'user_image',
                'label' => __('Image'),
                'id' => 'user_image',
                'title' => __('Image'),
                'value' => $value_that_you_need,
                'required' => false,
                'note' => 'Allow image type: jpg, jpeg, png'
            ]
        );

আমি আশা করি এটি আপনার কয়েকজনকে সহায়তা করবে ..


2

বিবৃতি প্রতিস্থাপন

return parent::_prepareForm();

এর সাথে

return \Magento\Backend\Block\Widget\Form\Generic::_prepareForm();

আমার জন্য কাজ। এখানে সম্পূর্ণ কোড। নিম্নলিখিত হিসাবে "অ্যাক্সেসযোগ্য স্টোর" ফিল্ড যুক্ত করা হচ্ছে।

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

// @codingStandardsIgnoreFile

namespace [vendor]\[module]\Block\User\Edit\Tab;

use Magento\Framework\App\ObjectManager;
use Magento\Framework\Locale\OptionInterface;

/**
 * Cms page edit form main tab
 *
 * @SuppressWarnings(PHPMD.DepthOfInheritance)
 */
class Main extends \Magento\User\Block\User\Edit\Tab\Main
{

    /**
     * @param \Magento\Backend\Block\Template\Context $context
     * @param \Magento\Framework\Registry $registry
     * @param \Magento\Framework\Data\FormFactory $formFactory
     * @param \Magento\Backend\Model\Auth\Session $authSession
     * @param \Magento\Framework\Locale\ListsInterface $localeLists
     * @param array $data
     * @param OptionInterface $deployedLocales Operates with deployed locales.
     */

    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Framework\Registry $registry,
        \Magento\Framework\Data\FormFactory $formFactory,
        \Magento\Backend\Model\Auth\Session $authSession,
        \Magento\Framework\Locale\ListsInterface $localeLists,
        array $data = [],
        OptionInterface $deployedLocales = null
    ) {
        $this->deployedLocales = $deployedLocales
            ?: ObjectManager::getInstance()->get(OptionInterface::class);
        parent::__construct($context, $registry, $formFactory, $authSession, $localeLists, $data, $this->deployedLocales);
    }

    /**
     * Prepare form fields
     *
     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
     * @return \Magento\Backend\Block\Widget\Form
     */
    protected function _prepareForm()
    {
        //die('test');
        /** @var $model \Magento\User\Model\User */
        $model = $this->_coreRegistry->registry('permissions_user');

        /** @var \Magento\Framework\Data\Form $form */
        $form = $this->_formFactory->create();
        $form->setHtmlIdPrefix('user_');

        $baseFieldset = $form->addFieldset('base_fieldset', ['legend' => __('Account Information')]);

        if ($model->getUserId()) {
            $baseFieldset->addField('user_id', 'hidden', ['name' => 'user_id']);
        } else {
            if (!$model->hasData('is_active')) {
                $model->setIsActive(1);
            }
        }

        $baseFieldset->addField(
            'username',
            'text',
            [
                'name' => 'username',
                'label' => __('User Name'),
                'id' => 'username',
                'title' => __('User Name'),
                'required' => true
            ]
        );

        $baseFieldset->addField(
            'firstname',
            'text',
            [
                'name' => 'firstname',
                'label' => __('First Name'),
                'id' => 'firstname',
                'title' => __('First Name'),
                'required' => true
            ]
        );

        $baseFieldset->addField(
            'lastname',
            'text',
            [
                'name' => 'lastname',
                'label' => __('Last Name'),
                'id' => 'lastname',
                'title' => __('Last Name'),
                'required' => true
            ]
        );

        // Adding new field for Scope Access
        $baseFieldset->addField(
            'accessible_store',
            'select',
            [
                'name' => 'accessible_store',
                'label' => __('Accessible Store'),
                'id' => 'accessible_store',
                'title' => __('Accessible Store'),
                'class' => 'input-select',
                'options' => ['3' => __('Global Store'), 
                              '1' => __('Malaysia Pavillion'), 
                              '2' => __('Thailand Pavilion')],
                'required' => true
            ]
        );

        $baseFieldset->addField(
            'email',
            'text',
            [
                'name' => 'email',
                'label' => __('Email'),
                'id' => 'customer_email',
                'title' => __('User Email'),
                'class' => 'required-entry validate-email',
                'required' => true
            ]
        );

        $isNewObject = $model->isObjectNew();
        if ($isNewObject) {
            $passwordLabel = __('Password');
        } else {
            $passwordLabel = __('New Password');
        }
        $confirmationLabel = __('Password Confirmation');
        $this->_addPasswordFields($baseFieldset, $passwordLabel, $confirmationLabel, $isNewObject);

        $baseFieldset->addField(
            'interface_locale',
            'select',
            [
                'name' => 'interface_locale',
                'label' => __('Interface Locale'),
                'title' => __('Interface Locale'),
                'values' => $this->deployedLocales->getOptionLocales(),
                'class' => 'select'
            ]
        );

        if ($this->_authSession->getUser()->getId() != $model->getUserId()) {
            $baseFieldset->addField(
                'is_active',
                'select',
                [
                    'name' => 'is_active',
                    'label' => __('This account is'),
                    'id' => 'is_active',
                    'title' => __('Account Status'),
                    'class' => 'input-select',
                    'options' => ['1' => __('Active'), '0' => __('Inactive')]
                ]
            );
        }

        $baseFieldset->addField('user_roles', 'hidden', ['name' => 'user_roles', 'id' => '_user_roles']);

        $currentUserVerificationFieldset = $form->addFieldset(
            'current_user_verification_fieldset',
            ['legend' => __('Current User Identity Verification')]
        );
        $currentUserVerificationFieldset->addField(
            self::CURRENT_USER_PASSWORD_FIELD,
            'password',
            [
                'name' => self::CURRENT_USER_PASSWORD_FIELD,
                'label' => __('Your Password'),
                'id' => self::CURRENT_USER_PASSWORD_FIELD,
                'title' => __('Your Password'),
                'class' => 'input-text validate-current-password required-entry',
                'required' => true
            ]
        );

        $data = $model->getData();
        unset($data['password']);
        unset($data[self::CURRENT_USER_PASSWORD_FIELD]);
        $form->setValues($data);

        $this->setForm($form);

        //return parent::_prepareForm();
        return \Magento\Backend\Block\Widget\Form\Generic::_prepareForm();
    }

}

এবং শুরু করার জন্য ক্লুটি ভাগ করে নেওয়ার জন্য @ রবকে ধন্যবাদ।


2

কেবল একটি কার্যকারী উদাহরণ যুক্ত করার জন্য, আমি ওয়েবসাইট প্রশাসক পৃষ্ঠাটি ওভাররাইটিংয়ে সফল হয়েছি। আমি ওয়েবসাইট সম্পাদনা পৃষ্ঠায় একটি URL ফিল্ড যুক্ত করার চেষ্টা করছিলাম।

এটি যাচাইকৃত উত্তরে যা বলেছিল ঠিক আমি তা করেছিলাম তবে আমি কোনও নতুন ফিল্ডসেট যোগ করিনি। পরিবর্তে, আমি বিদ্যমান ওয়েবসাইটটি ক্লাসে সংজ্ঞায়িত আইডি ব্যবহার করে এটি সম্পূর্ণ করেছি।

এছাড়াও, আমি উত্তরাধিকারটি ওয়েবসাইটের মডেলটি পুনরুদ্ধার করতে এবং ফর্মের অভ্যন্তরে রাখার জন্য ডাটাবেস থেকে বর্তমান মানটি পুনরুদ্ধার করতে ব্যবহার করেছি (এটি ম্যাগেন্টো ওয়েবসাইট শ্রেণিতেও অনুলিপি করা হয়েছে)।

পূর্বশর্ত হিসাবে, এটি ম্যাজেন্টো ডাটাবেসের store_website সারণীতে 'url' কলাম যুক্ত করা দরকার।

এখানে কার্যকারী ফলাফল (ম্যাজেন্টো ২.১ এ পরীক্ষিত):

<?php

namespace Vendor\Store\Plugin\Block\System\Store\Edit\Form;

class Website extends \Magento\Backend\Block\System\Store\Edit\Form\Website
{
    /**
     * Get form HTML
     *
     * @return string
     */
    public function aroundGetFormHtml(
        \Magento\Backend\Block\System\Store\Edit\Form\Website $subject,
        \Closure $proceed
    )
    {
        $form = $subject->getForm();
        if (is_object($form)) {

            // From \Magento\Backend\Block\System\Store\Edit\Form\Website :
            $websiteModel = $this->_coreRegistry->registry('store_data');
            $postData = $this->_coreRegistry->registry('store_post_data');
            if ($postData) {
                $websiteModel->setData($postData['website']);
            }

            // Fieldset name from \Magento\Backend\Block\System\Store\Edit\Form\Website
            $fieldset = $form->getElement('website_fieldset');
            $fieldset->addField(
                'website_url',
                'text',
                [
                    'name' => 'website[url]', // From \Magento\Backend\Block\System\Store\Edit\Form\Website
                    'label' => __('Website URL'),
                    'value' => $websiteModel->getData('url'),
                    'title' => __('Website URL'),
                    'required' => false
                ]
            );

            $subject->setForm($form);
        }

        return $proceed();
    }
}

এবং বিক্রেতা / স্টোর / ইত্যাদি / প্রশাসক ডিরেক্টরিতে di.xML ফাইল (বৈধ উত্তর থেকে এখানে নতুন কিছু নয়):

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Backend\Block\System\Store\Edit\Form\Website">
        <plugin name="admin_website_plugin" type="Vendor\Store\Plugin\Block\System\Store\Edit\Form\Website" sortOrder="1"/>
    </type>
</config>

0

আমি আপনার সমাধানে সামান্য পরিবর্তন করেছি এবং এটি আমার পক্ষে কাজ করেছে:

class Main extends \Magento\Backend\Block\Widget\Form\Generic
{
//Copied All the code in --- Magento\User\Block\User\Edit\Tab\Main
//added my own field in _prepareForm function

}

আপনি যদি চান তবে আমি পুরো সমাধানটি পোস্ট করতে পারি - তবে আমাকে এটি সংশোধন করতে হবে কারণ আমার সংস্থার নিয়ম অনুসারে আমি পাবলিক ফোরামে কোডটি প্রদর্শন করতে পারি না। সুতরাং আপনি নিজেই এটি করতে পারেন কিনা তা আমাকে জানান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.