무효 블록 유형과 같은 오류를 디버그하는 방법 : Magento \ Backend \ Block \ Empty \ Edit \ Form?
-
29-09-2020 - |
문제
Therer는 무효 블록 유형과 같이 더 쉽게 오류를 디버깅하는 방법입니다. magento \ backend \ block \ empty \ Edit \ form?
종류의 을 시도하는 것은 모듈 판매 규칙 모듈의 기능을 복제하지만, 사용자 정의 양식에 악센트가있을 때이 오류가 발생하는 IM이 오류가 발생합니다.
Invalid block type: Magento\Backend\Block\Empty\Edit\Form
#0 /var/www/magento2_conector/vendor/magento/framework/View/Layout/Generator/Block.php(237): Magento\Framework\View\Layout\Generator\Block->getBlockInstance('Magento\\Backend...', Array)
#1 /var/www/magento2_conector/vendor/magento/framework/View/Layout.php(760): Magento\Framework\View\Layout\Generator\Block->createBlock('Magento\\Backend...', 'promo_coupons...', Array)
#2 /var/www/magento2_conector/vendor/magento/framework/View/Layout.php(743): Magento\Framework\View\Layout->_createBlock('Magento\\Backend...', 'promo_coupons...', Array)
#3 /var/www/magento2_conector/var/generation/Magento/Framework/View/Layout/Interceptor.php(349): Magento\Framework\View\Layout->createBlock('Magento\\Backend...', 'promo_coupons...', Array)
#4 /var/www/magento2_conector/vendor/magento/framework/View/Element/AbstractBlock.php(380): Magento\Framework\View\Layout\Interceptor->createBlock('Magento\\Backend...', 'promo_coupons...', Array)
#5 /var/www/magento2_conector/vendor/magento/module-backend/Block/Widget/Form/Container.php(108): Magento\Framework\View\Element\AbstractBlock->addChild('form', 'Magento\\Backend...')
#6 /var/www/magento2_conector/vendor/magento/framework/View/Element/AbstractBlock.php(262): Magento\Backend\Block\Widget\Form\Container->_prepareLayout()
#7 /var/www/magento2_conector/vendor/magento/framework/View/Layout/Generator/Block.php(139): Magento\Framework\View\Element\AbstractBlock->setLayout(Object(Magento\Framework\View\Layout\Interceptor))
#8 /var/www/magento2_conector/vendor/magento/framework/View/Layout/GeneratorPool.php(86): Magento\Framework\View\Layout\Generator\Block->process(Object(Magento\Framework\View\Layout\Reader\Context), Object(Magento\Framework\View\Layout\Generator\Context))
#9 /var/www/magento2_conector/vendor/magento/framework/View/Layout.php(327): Magento\Framework\View\Layout\GeneratorPool->process(Object(Magento\Framework\View\Layout\Reader\Context), Object(Magento\Framework\View\Layout\Generator\Context))
#10 /var/www/magento2_conector/var/generation/Magento/Framework/View/Layout/Interceptor.php(89): Magento\Framework\View\Layout->generateElements()
#11 /var/www/magento2_conector/vendor/magento/framework/View/Layout/Builder.php(129): Magento\Framework\View\Layout\Interceptor->generateElements()
#12 /var/www/magento2_conector/vendor/magento/framework/View/Page/Builder.php(55): Magento\Framework\View\Layout\Builder->generateLayoutBlocks()
#13 /var/www/magento2_conector/vendor/magento/framework/View/Layout/Builder.php(65): Magento\Framework\View\Page\Builder->generateLayoutBlocks()
#14 /var/www/magento2_conector/vendor/magento/framework/View/Page/Config.php(166): Magento\Framework\View\Layout\Builder->build()
#15 /var/www/magento2_conector/vendor/magento/framework/View/Page/Config.php(176): Magento\Framework\View\Page\Config->build()
#16 /var/www/magento2_conector/vendor/magento/framework/View/Result/Page.php(225): Magento\Framework\View\Page\Config->publicBuild()
#17 /var/www/magento2_conector/vendor/magento/framework/View/Result/Layout.php(162): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor))
#18 /var/www/magento2_conector/var/generation/Magento/Backend/Model/View/Result/Page/Interceptor.php(193): Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#19 /var/www/magento2_conector/vendor/magento/framework/App/Http.php(119): Magento\Backend\Model\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#20 /var/www/magento2_conector/vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
#21 /var/www/magento2_conector/index.php(39): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
.
I execute 메소드가있는 Controller NewAction.php가 있습니다
public function execute()
{
$this->_forward('edit');
}
.
및 내 컨트롤러 Edit.php
public function execute()
{
return $this->pageFactory->create();
}
.
그런 다음 XML 레이아웃은 modulename_promo_coupons_edit.xml을 핸들링하여 일부 블록을 추가하여 양식을 추가하기 위해 일부 블록을 추가합니다.
<body>
<referenceContainer name="content">
<block class="Vendor\Coupons\Block\Adminhtml\Promo\Coupons\EditContainer" name="promo_coupons_edit_container" />
<block class="Vendor\Coupons\Block\Adminhtml\Promo\Coupons\EditContainer\EditForm" name="promo_coupons_edit_form" />
</referenceContainer>
</body>
.
내 편집기 class는 \Magento\Backend\Block\Widget\Form\Container
및 my editform 클래스에서 \Magento\Backend\Block\Widget\Form\Generic
에서 확장됩니다
무엇을 잘못하고 있습니까?
해결책
\ magento \ backend \ block \ widget \ form \ container 클래스를 추가해야합니다
protected function _construct(){
parent::_construct();
$this->_objectId = 'simple_form';
$this->_blockGroup = 'Examples_SimpleForm';
$this->_controller = 'adminhtml_template';
$this->buttonList->add('save_simple_form', ['label' => __('Save simple form')]);
}
.
이 양식 \ 컨테이너가 양식 / 일반 수업을 찾아야하는 위치를 나타내는 $this->_controller = 'adminhtml_template';
에서 참고하십시오 (이것은 내가 얻은 것)
제휴하지 않습니다 magento.stackexchange