- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
尝试加载自定义模块的编辑/创建表单。
在我的生产系统 (linux) 上的 Magento 2.1.1 中,我得到了一个无效的 block 类型异常,这是由找不到类引起的,而在我的本地主机 xampp/windows 上一切正常。当我想在网格正常工作时打开表单以创建或编辑自定义实体时发生。
2 exception(s):
Exception #0 (Magento\Framework\Exception\LocalizedException): Invalid block type: Brainworx\Medipimsync\Block\Adminhtml\Sync\Edit\Form
Exception #1 (ReflectionException): Class Brainworx\Medipimsync\Block\Adminhtml\Sync\Edit\Form does not exist
Exception #0 (Magento\Framework\Exception\LocalizedException): Invalid block type: Brainworx\Medipimsync\Block\Adminhtml\Sync\Edit\Form
#0 /data/sites/web/apovitabe/www/vendor/magento/framework/View/Layout/Generator/Block.php(237): Magento\Framework\View\Layout\Generator\Block->getBlockInstance('Brainworx\\Medip...', Array)
#1 /data/sites/web/apovitabe/www/vendor/magento/framework/View/Layout.php(760): Magento\Framework\View\Layout\Generator\Block->createBlock('Brainworx\\Medip...', 'medipimsync_syn...', Array)
#2 /data/sites/web/apovitabe/www/vendor/magento/framework/View/Layout.php(743): Magento\Framework\View\Layout->_createBlock('Brainworx\\Medip...', 'medipimsync_syn...', Array)
#3 /data/sites/web/apovitabe/www/var/generation/Magento/Framework/View/Layout/Interceptor.php(349): Magento\Framework\View\Layout->createBlock('Brainworx\\Medip...', 'medipimsync_syn...', Array)
#4 /data/sites/web/apovitabe/www/vendor/magento/framework/View/Element/AbstractBlock.php(382): Magento\Framework\View\Layout\Interceptor->createBlock('Brainworx\\Medip...', 'medipimsync_syn...', Array)
#5 /data/sites/web/apovitabe/www/vendor/magento/module-backend/Block/Widget/Form/Container.php(108): Magento\Framework\View\Element\AbstractBlock->addChild('form', 'Brainworx\\Medip...')
#6 /data/sites/web/apovitabe/www/vendor/magento/framework/View/Element/AbstractBlock.php(264): Magento\Backend\Block\Widget\Form\Container->_prepareLayout()
#7 /data/sites/web/apovitabe/www/vendor/magento/framework/View/Layout/Generator/Block.php(139): Magento\Framework\View\Element\AbstractBlock->setLayout(Object(Magento\Framework\View\Layout\Interceptor))
#8 /data/sites/web/apovitabe/www/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 /data/sites/web/apovitabe/www/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 /data/sites/web/apovitabe/www/var/generation/Magento/Framework/View/Layout/Interceptor.php(89): Magento\Framework\View\Layout->generateElements()
#11 /data/sites/web/apovitabe/www/vendor/magento/framework/View/Layout/Builder.php(129): Magento\Framework\View\Layout\Interceptor->generateElements()
#12 /data/sites/web/apovitabe/www/vendor/magento/framework/View/Page/Builder.php(55): Magento\Framework\View\Layout\Builder->generateLayoutBlocks()
#13 /data/sites/web/apovitabe/www/vendor/magento/framework/View/Layout/Builder.php(65): Magento\Framework\View\Page\Builder->generateLayoutBlocks()
#14 /data/sites/web/apovitabe/www/vendor/magento/framework/View/Layout.php(244): Magento\Framework\View\Layout\Builder->build()
#15 /data/sites/web/apovitabe/www/vendor/magento/framework/View/Layout.php(859): Magento\Framework\View\Layout->build()
#16 /data/sites/web/apovitabe/www/var/generation/Magento/Framework/View/Layout/Interceptor.php(414): Magento\Framework\View\Layout->getBlock('menu')
#17 /data/sites/web/apovitabe/www/vendor/magento/module-backend/Model/View/Result/Page.php(59): Magento\Framework\View\Layout\Interceptor->getBlock('menu')
#18 /data/sites/web/apovitabe/www/var/generation/Magento/Backend/Model/View/Result/Page/Interceptor.php(24): Magento\Backend\Model\View\Result\Page->setActiveMenu('Brainworx_Medip...')
#19 /data/sites/web/apovitabe/www/app/code/brainworx/medipimsync/Controller/Adminhtml/Sync/Edit.php(52): Magento\Backend\Model\View\Result\Page\Interceptor->setActiveMenu('Brainworx_Medip...')
#20 /data/sites/web/apovitabe/www/app/code/brainworx/medipimsync/Controller/Adminhtml/Sync/Edit.php(87): brainworx\medipimsync\Controller\Adminhtml\Sync\Edit->_initAction()
#21 /data/sites/web/apovitabe/www/var/generation/brainworx/medipimsync/Controller/Adminhtml/Sync/Edit/Interceptor.php(24): brainworx\medipimsync\Controller\Adminhtml\Sync\Edit->execute()
#22 /data/sites/web/apovitabe/www/vendor/magento/framework/App/Action/Action.php(102): brainworx\medipimsync\Controller\Adminhtml\Sync\Edit\Interceptor->execute()
#23 /data/sites/web/apovitabe/www/vendor/magento/module-backend/App/AbstractAction.php(226): Magento\Framework\App\Action\Action->dispatch(Object(Magento\Framework\App\Request\Http))
#24 /data/sites/web/apovitabe/www/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Backend\App\AbstractAction->dispatch(Object(Magento\Framework\App\Request\Http))
#25 /data/sites/web/apovitabe/www/vendor/magento/framework/Interception/Chain/Chain.php(70): brainworx\medipimsync\Controller\Adminhtml\Sync\Edit\Interceptor->___callParent('dispatch', Array)
#26 /data/sites/web/apovitabe/www/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('brainworx\\medip...', 'dispatch', Object(brainworx\medipimsync\Controller\Adminhtml\Sync\Edit\Interceptor), Array, 'adminAuthentica...')
设置:
register.php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'brainworx_medipimsync',
__DIR__
);
etc/Module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="brainworx_medipimsync" setup_version="1.0.4" />
</config>
表单类存在 app\code\brainworx\medipimsync\Block\Adminhtml\Sync\Edit\Form.php
namespace brainworx\medipimsync\Block\Adminhtml\Sync\Edit;
use Magento\Backend\Block\Template\Context;
use Magento\Framework\Registry;
use Magento\Framework\Data\FormFactory;
use Magento\Store\Model\System\Store;
use Magento\Backend\Model\Auth\Session;
/**
* Adminhtml sync edit form
*/
class Form extends \Magento\Backend\Block\Widget\Form\Generic
{
/**
* @var \Magento\Store\Model\System\Store
*/
protected $_systemStore;
protected $_loginUser;
/**
* @param \Magento\Backend\Block\Template\Context $context
* @param \Magento\Framework\Registry $registry
* @param \Magento\Framework\Data\FormFactory $formFactory
* @param \Magento\Cms\Model\Wysiwyg\Config $wysiwygConfig
* @param \Magento\Store\Model\System\Store $systemStore
* @param array $data
* @param \Magento\backend\Model\Auth\Session $authSession
*/
public function __construct(
Context $context,Registry $registry,FormFactory $formFactory,Store $systemStore,
array $data = [],Session $authSession
) {
$this->_systemStore = $systemStore;
$this->_loginUser = $authSession->getUser()->getUsername();
parent::__construct($context, $registry, $formFactory, $data);
}
/**
* Init form
*
* @return void
*/
protected function _construct()
{
parent::_construct();
$this->setId('sync_form');
$this->setTitle(__('Sync Information'));
}
/**
* Prepare form
*
* @return $this
*/
protected function _prepareForm()
{
/** @var \brainworx\medipimsync\Model\Sync $model */
$model = $this->_coreRegistry->registry('medipimsync_sync');
/** @var \Magento\Framework\Data\Form $form */
$form = $this->_formFactory->create(
['data' => ['id' => 'edit_form','action' => $this->getData('action'), 'method' => 'post']]
);
$form->setHtmlIdPrefix('sync_');
$fieldset = $form->addFieldset(
'base_fieldset',
['legend' => __('General Information'), 'class' => 'fieldset-wide']
);
$fieldset->addField(
'title',
'text',
['name' => 'user', 'label' => __('User'), 'title' => __('User'), 'required' => true,
'value' => $this->_loginUser , 'readonly' => true
]
);
$fieldset->addField(
'entity',
'select',
[
'label' => __('Entity'),
'title' => __('Entity'),
'name' => 'entity',
'required' => true,
'options' => ['PROD' => __('Products'), 'CAT' => __('Categories')]
]
);
//$form->setValues($model->getData());
$form->setUseContainer(true);
$this->setForm($form);
return parent::_prepareForm();
}
}
编辑类还有包含表单的编辑类app\code\brainworx\medipimsync\Block\Adminhtml\Sync\Edit.php
namespace brainworx\medipimsync\Block\Adminhtml\Sync;
class Edit extends \Magento\Backend\Block\Widget\Form\Container
{
/**
* Core registry
*
* @var \Magento\Framework\Registry
*/
protected $_coreRegistry = null;
/**
* @param \Magento\Backend\Block\Widget\Context $context
* @param \Magento\Framework\Registry $registry
* @param array $data
*/
public function __construct(
\Magento\Backend\Block\Widget\Context $context,
\Magento\Framework\Registry $registry,
array $data = []
) {
$this->_coreRegistry = $registry;
parent::__construct($context, $data);
}
/**
* Initialize blog post edit block
*
* @return void
*/
protected function _construct()
{
$this->_objectId = 'sync_id';
$this->_blockGroup = 'brainworx_medipimsync';
$this->_controller = 'adminhtml_sync';
parent::_construct();
if ($this->_isAllowedAction('Brainworx_Medipimsync::save')) {
$this->buttonList->update('save', 'label', __('Creatae new'));
$this->buttonList->add(
'saveandcontinue',
[
'label' => __('Save and Continue Edit'),
'class' => 'save',
'data_attribute' => [
'mage-init' => [
'button' => ['event' => 'saveAndContinueEdit', 'target' => '#edit_form'],
],
]
],
-100
);
} else {
$this->buttonList->remove('save');
}
}
/**
* Retrieve text for header element depending on loaded post
*
* @return \Magento\Framework\Phrase
*/
public function getHeaderText()
{
if ($this->_coreRegistry->registry('medipim_sync')->getId()) {
return __("Edit Sync '%1'", $this->escapeHtml($this->_coreRegistry->registry('medipimsync_sync')->getTitle()));
} else {
return __('New Sync');
}
}
/**
* Check permission for passed action
*
* @param string $resourceId
* @return bool
*/
protected function _isAllowedAction($resourceId)
{
return $this->_authorization->isAllowed($resourceId);
}
/**
* Getter of url for "Save and Continue" button
* tab_id will be replaced by desired by JS later
*
* @return string
*/
protected function _getSaveAndContinueUrl()
{
return $this->getUrl('medipimsync/*/save', ['_current' => true, 'back' => 'edit', 'active_tab' => '']);
}
}
布局文件以及加载编辑类的布局文件:view/adminhtml/layout/medipimsync_sync_edit.xml
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<update handle="editor"/>
<body>
<referenceContainer name="content">
<block class="brainworx\medipimsync\Block\Adminhtml\Sync\Edit" name="medipimsync_sync_edit"/>
</referenceContainer>
</body>
</page>
感谢您的帮助!
最佳答案
经过一天一夜的搜索,已经找到了解决方案。
对于那些想知道的人:你应该使目录和模块名称大写。将所有内容更改为 Brainworx\Medipimsync 就可以了!因此,app/code 下的目录都作为模块名称和命名空间。
关于magento2 - Magento 2.1.1 无效的 block 类型异常 - 找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39683526/
Magento 主题和 Magento 皮肤有什么区别?它们和 Magento 模块之间有什么关系? 最佳答案 主题是创建视觉体验的布局、模板、区域设置和/或外观文件的任意组合... 主题由以下任意或
我想在 Magento 之外获得购物车 Block。这是我的代码。 getLocale()->getLocaleCode(); //Solution Mage::getSingleto
我是 Magento 新手,使用 CE 1.7.0.2 开发了一个网站。现在可以上线了,但我遇到了页面加载缓慢的问题。 我的网站产品主页、列表和详细信息页面最初需要 10-13 秒的时间来加载页面,但
我在 magento 网站上工作。我有 4 个类别,其中两个使用其他主题(不是我的特定 magento 主题)。我如何配置我的主题以从我的默认主题而不是基本主题中获取丢失的文件。 谢谢 最佳答案 通常
我遇到了我的 magento 项目的要求,因此我需要为特定客户群的购买提供特别折扣。此折扣必须显示在客户帐户中,如果他们属于该特定组,并且当用户要使用该特定折扣时,必须根据该折扣优惠对该商品的价格进行
我在 Magento 主题开发中找到的大量教程建议从使用空白作为制作您自己的自定义主题的指南开始。很多这些文章已经很旧了,截至当前版本(1.7),情况仍然如此吗? 附言- 除了 Magento 的 o
似乎这应该是一个可以找到的问题,但我找不到它。 magento 数据库中存储的类别 NAME 在哪里?我可以看到 catalog_category_entity有 key ID,然后还有其他 EAV
我知道 magento 会根据需要调整原始产品图像的大小并以不同的大小对其进行多次缓存。 这些 chached 图像存储在哪里(路径)? 当您从缓存管理中刷新图像缓存时,它们会被删除吗? 如果我要手动
我在我的 magento 网上商店中使用这个扩展 http://www.manadev.com/seo-layered-navigation-plus (分层导航) 此扩展适用于简单的产品。 但就我而
我在 Magento 的一家商店下拥有某些产品的批发属性。我想设置它,以便这些特定属性仅出现在产品页面上,如果客户已登录并且他们在批发客户组中。 这可能吗? 最佳答案 像这样的事情应该可以工作,尽管我
和有什么区别和 在 Magento 中? 我将创建一个新模块,我必须决定在这两个事件中的哪一个事件中挂起我的观察者。 最佳答案 类别(和所有其他对象)保存在事务中。事件catalog_categor
好吧,这是一个似乎很容易解决的问题,但它让我望而却步...... 我的 Magento Web 上有一些类别,每个类别都有一些产品。我希望它们显示为 4 列计数,但它始终显示为 3 列计数,如下所示:
我已经在我的网站上添加了一些成员(member)跟踪代码。为了使跟踪工作正常进行,我需要向关联公司提供确认付款的网址。 我正在使用Magento,我不确定该版本,但几年内未对其进行更新。我需要知道订单
我们的网站遇到了问题。 系统 > 配置屏幕仅显示菜单、侧面菜单和页脚。当我们点击侧边菜单选项时,屏幕仍然黑屏,相关信息也没有出现。请看 this link .这就是出现的情况。当我们点击任何侧面菜单选
我想只使用一个 csv 文件来翻译前端 Magento 商店。所以我这样做了: 我创建了一个名为 Translator 的自定义模块。在其 config.xml 中,我放置了以下几行: ....
我添加了自定义订单状态选项。 有谁知道我如何通过API将其设置为自定义值? 最佳答案 感谢Diglin为我指出的正确位置。只是为了正确地给出答案: 您可以使用addComment方法来执行此操作,该方
目前,Magento 处理大规模操作的方式存在问题。无论分页如何,它都会返回一些 JS,其中包含当前集合和过滤器的每个 db id。这是为了支持网格标题中的“全选”与“全选可见”选项。当您的记录数量较
如何收集具有此角色的所有角色(系统->权限->角色)和用户? 谢谢。 最佳答案 获得所有角色 $roles = Mage::getModel('admin/roles')->getCol
如果能在我网站的各种应用程序之间进行通用登录,那将是一种巨大的用户体验。现在,我有一个 Magento 店面和一个 IPS 板社区。我正在尝试将它们集成到我的用户的一个通用登录中。 IPS 板提供多种
我正在为 Magento 社区 1.4.2 版中的时尚客户开发一个网站,作为该项目的一部分,我需要一些定制的主页促销块来展示特定产品或产品类别。为此,我想我会编写自己的小部件,并且除了如何处理图像外,
我是一名优秀的程序员,十分优秀!