路径 "sylius_cart.resources.cart.classes.form" 的类型无效。预期数组,但得到字符串 symfony 2.8.3 sylius 0.17.0

Invalid type for path "sylius_cart.resources.cart.classes.form". Expected array, but got string symfony 2.8.3 sylius 0.17.0

这是一条非常明确的错误消息,但由于某些原因我一直无法理解它。

配置:

sylius_cart:
# The driver used for persistence layer.
driver: ~
# Service id of cart item resolver.
resolver: app.cart_item_resolver
# Cart provider service id.
provider: sylius.cart_provider.default
# The id of cart storage for default provider.
storage: sylius.cart_storage.session
resources:
    cart:
        classes:
            controller: Sylius\Bundle\CartBundle\Controller\CartController
            form:       Sylius\Bundle\CartBundle\Form\Type\CartType
        validation_groups:
            default: [ sylius ]
    cart_item:
        classes:
            controller: Sylius\Bundle\CartBundle\Controller\CartItemController
            form:       Sylius\Bundle\CartBundle\Form\Type\CartItemType
        validation_groups:
            default: [ sylius ]

当我运行

$ php app/console doctrine:schema:update --force

我得到错误:

[Symfony\Component\Config\Definition\Exception\InvalidTypeException] Invalid type for path "sylius_cart.resources.cart.classes.form". Expected array, but got string

正如您在 Configuration 中看到的那样,sylius_cart.resources.cart.classes.form 需要一个具有单个键 default 的数组。

->arrayNode('form')
    ->addDefaultsIfNotSet()
    ->children()
        ->scalarNode('default')->defaultValue(CartType::class)->cannotBeEmpty()->end()
    ->end()
->end()

您需要将配置更改为

//...
resources:
    cart:
        classes:
            controller: Sylius\Bundle\CartBundle\Controller\CartController
            form:
                default: Sylius\Bundle\CartBundle\Form\Type\CartType
        validation_groups:
            default: [ sylius ]
    cart_item:
        classes:
            controller: Sylius\Bundle\CartBundle\Controller\CartItemController
            form:
                default: Sylius\Bundle\CartBundle\Form\Type\CartItemType
        validation_groups:
            default: [ sylius ]