Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 试图在orocommerce中创建自定义块类型,但得到的结果是:无法加载块类型";产品“U变体”;。_Php_Symfony_Symfony 2.1_Orocrm_Orocommerce - Fatal编程技术网

Php 试图在orocommerce中创建自定义块类型,但得到的结果是:无法加载块类型";产品“U变体”;。

Php 试图在orocommerce中创建自定义块类型,但得到的结果是:无法加载块类型";产品“U变体”;。,php,symfony,symfony-2.1,orocrm,orocommerce,Php,Symfony,Symfony 2.1,Orocrm,Orocommerce,试图在orocommerce中创建自定义块类型,但得到的结果是:无法加载块类型“product_variants” 我已经在中创建了块类型yml文件 Resources/config/block_types.yml services: xngage_product.layout.block_type.product_variants: parent: oro_layout.block_type.abstract_configurable_container

试图在orocommerce中创建自定义块类型,但得到的结果是:无法加载块类型“product_variants”

我已经在中创建了块类型yml文件 Resources/config/block_types.yml

  services:
       xngage_product.layout.block_type.product_variants:
       parent: oro_layout.block_type.abstract_configurable_container
       calls:
        - [setOptionsConfig, [{variants: {required: true}}]]
        - [setName, ['product_variants']]
    tags:
         - { name: layout.block_type, alias: product_variants }


xngage_product.layout.block_type_extension.product_variants:
    class: Xngage\ProductBundle\Layout\Extension\ProductVariantsExtension
    tags:
        - { name: layout.block_type_extension, alias: product_variants }
并在Resources/layouts/xngage_theme/oro_product_frontend_product_view/configure_product.yml中创建了用于配置产品的布局

layout:
imports:
    - oro_product_view

actions:
    - '@setBlockTheme':
        themes: 'configurable_product.html.twig'

    - '@add':
        id: product_variants
        blockType: product_variants
        parentId: product_specification_container
        siblingId: product_specification
        options:
            variants: '=data["product_variants"].getVariants(data["product"])'

conditions: 'context["product_type"] == "simple"'

是否缺少任何步骤?

请确保在容器中注册了
Resources/config/block\u types.yml

此处可以找到注册示例

请确保在容器中注册了
Resources/config/block_types.yml

注册示例可在此处找到

因此,使用Oro布局系统,您可以基于块创建自定义小部件,这样负责的类父级为Oro\Bundle\LayoutBundle\layout\block\Type\ConfigurableType,或者您可以通过父级Oro\u layout.block\Type.abstract\u configurable或

oro_layout.block_type.abstract_configurable_container:
    oro_layout.block_type.abstract_configurable:
        abstract: true
        class: Oro\Bundle\LayoutBundle\Layout\Block\Type\ConfigurableType
    oro_layout.block_type.abstract_configurable_container:
        abstract: true
        parent: oro_layout.block_type.abstract_configurable
        calls:
            - [setParent, ['container']]
在内部创建block_types.yml Ibnab/Bundle/CustomWidgetBundle/Resources/config/block_types.yml并填入:

ibnab_custom_widget.layout.type.product:
    parent:  oro_layout.block_type.abstract_configurable
    calls:
        - [setOptionsConfig, [{product_id: {}}]]
        - [setName, ['ibnab_custom_widget_product']]
注意:不要忘记在DependencyInjection/CustomWidgetExtension中加载block_types.yml,例如:

$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$loader->load('block_types.yml');
在这里,您添加了一个基于块小部件的自定义小部件,该小部件能够接受和选择product_id,您可以添加,例如,这是必需的

- [setOptionsConfig, [{product_id: {required: true}}]]
在布局处理程序oro_product_frontend_product_view(是一个文件夹,其路径名为product page view,当您在product details page上时,它会被发送),因此您可以在layout.yml中填充以下内容,例如:

layout:
    actions:
        - '@setBlockTheme':
            themes: 'CustomWidgetBundle:layouts:blank/oro_product_frontend_product_view/layout.html.twig' 
        - '@add':
            id:  ibnab_custom_widget_product_direct
            parentId: product_view_primary_container
            blockType:  ibnab_custom_widget_product
            prepend: true
            options:
                product_id: '=data["product"].getId()'
现在,您可以在layout.twig中使用此选项product\u id


整个课程

因此,使用Oro布局系统,您可以创建基于块的自定义小部件,这样负责的类父级是Oro\Bundle\LayoutBundle\layout\block\Type\ConfigurableType,或者您可以按父级创建基于容器的自定义小部件Oro\u layout.block\u Type.abstract\u configurable或

oro_layout.block_type.abstract_configurable_container:
    oro_layout.block_type.abstract_configurable:
        abstract: true
        class: Oro\Bundle\LayoutBundle\Layout\Block\Type\ConfigurableType
    oro_layout.block_type.abstract_configurable_container:
        abstract: true
        parent: oro_layout.block_type.abstract_configurable
        calls:
            - [setParent, ['container']]
在内部创建block_types.yml Ibnab/Bundle/CustomWidgetBundle/Resources/config/block_types.yml并填入:

ibnab_custom_widget.layout.type.product:
    parent:  oro_layout.block_type.abstract_configurable
    calls:
        - [setOptionsConfig, [{product_id: {}}]]
        - [setName, ['ibnab_custom_widget_product']]
注意:不要忘记在DependencyInjection/CustomWidgetExtension中加载block_types.yml,例如:

$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$loader->load('block_types.yml');
在这里,您添加了一个基于块小部件的自定义小部件,该小部件能够接受和选择product_id,您可以添加,例如,这是必需的

- [setOptionsConfig, [{product_id: {required: true}}]]
在布局处理程序oro_product_frontend_product_view(是一个文件夹,其路径名为product page view,当您在product details page上时,它会被发送),因此您可以在layout.yml中填充以下内容,例如:

layout:
    actions:
        - '@setBlockTheme':
            themes: 'CustomWidgetBundle:layouts:blank/oro_product_frontend_product_view/layout.html.twig' 
        - '@add':
            id:  ibnab_custom_widget_product_direct
            parentId: product_view_primary_container
            blockType:  ibnab_custom_widget_product
            prepend: true
            options:
                product_id: '=data["product"].getId()'
现在,您可以在layout.twig中使用此选项product\u id


整个课程

你的意思是我必须在捆绑包容器中注册它?是的,请参见示例你的意思是我必须在捆绑包容器中注册它?是的,请参见示例