수업을 완전히 재정의하지 않고 어떻게 할 수 있는지 모르겠습니다. 예를 들어, XML에서 "disabled"항목을 "data"인수로 설정하여 개별 구성 요소를 비활성화 할 수 있습니다. 예를 들어 :
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<fieldset name="general">
<field name="title">
<argument name="data" xsi:type="array">
<item name="disabled" xsi:type="boolean">true</item>
</argument>
</field>
</fieldset>
</form>
이렇게하면 $components
배열 에서 '제목'이 효과적으로 제거 됩니다.
이것은 클래스 의 createChildComponent
메소드 때문입니다 Magento\Framework\View\Element\UiComponentFactory
.
protected function createChildComponent(
array $bundleComponents,
ContextInterface $renderContext,
$identifier
) {
list($className, $arguments) = $this->argumentsResolver($identifier, $bundleComponents);
if (isset($arguments['data']['disabled']) && (int)$arguments['data']['disabled']) {
return null;
}
$components = [];
foreach ($bundleComponents['children'] as $childrenIdentifier => $childrenData) {
$children = $this->createChildComponent(
$childrenData,
$renderContext,
$childrenIdentifier
);
$components[$childrenIdentifier] = $children;
}
$components = array_filter($components);
$arguments['components'] = $components;
if (!isset($arguments['context'])) {
$arguments['context'] = $renderContext;
}
return $this->objectManager->create($className, $arguments);
}