在 Sylius (Symfony3) 上创建自定义资源表单:"Expected scalar, but got array"
Create a custom resource form on Sylius (Symfony3) : "Expected scalar, but got array"
我尝试使用 Sylius doc 为我的 Sylius 资源 "article" 创建自定义表单。在不创建自定义表单的情况下,一切正常,但是如果我想创建自定义表单,则会出现此错误 "Invalid type for path "sylius_resource.resources.blog.article.classes.form". Expected scalar, but got array."
这是我的文章类型class:
<?php
namespace BlogAdminBundle\Form\Type;
use Symfony\Component\Form\FormBuilderInterface;
use Sylius\Bundle\ResourceBundle\Form\Type\AbstractResourceType;
class ArticleType extends AbstractResourceType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
// Build your custom form!
$builder->add('id', HiddenType::class)
->add('titre', TextType::class)
->add('date', DateType::class, array('html5' => true))
->add('contenu', CKEditorType::class)
->add('tags', TextType::class)
->add('resume', TextareaType::class)
->add('save', SubmitType::class, array('label' => 'Enregistrer l\'article'));
}
public function getName()
{
return 'admin_article';
}
}
以及我的资源声明:
sylius_resource:
resources:
blog.article:
driver: doctrine/orm
classes:
model: BlogBundle\Entity\Article
form:
default: BlogAdminBundle\Form\Type\ArticleType
有人知道问题出在哪里吗?
谢谢大家!
您必须将您的表单注册为 form.type 服务。你必须发送你的形式的参数 class。你应该这样做:
services:
app.form.type.article:
class: BlogAdminBundle\Form\Type\ArticleType
arguments: [BlogBundle\Entity\Article]
tags:
- { name: form.type }
您可以使用以下命令检查您的文章使用了哪些 classes:
php bin/console debug:container | grep article
我尝试使用 Sylius doc 为我的 Sylius 资源 "article" 创建自定义表单。在不创建自定义表单的情况下,一切正常,但是如果我想创建自定义表单,则会出现此错误 "Invalid type for path "sylius_resource.resources.blog.article.classes.form". Expected scalar, but got array."
这是我的文章类型class:
<?php
namespace BlogAdminBundle\Form\Type;
use Symfony\Component\Form\FormBuilderInterface;
use Sylius\Bundle\ResourceBundle\Form\Type\AbstractResourceType;
class ArticleType extends AbstractResourceType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
// Build your custom form!
$builder->add('id', HiddenType::class)
->add('titre', TextType::class)
->add('date', DateType::class, array('html5' => true))
->add('contenu', CKEditorType::class)
->add('tags', TextType::class)
->add('resume', TextareaType::class)
->add('save', SubmitType::class, array('label' => 'Enregistrer l\'article'));
}
public function getName()
{
return 'admin_article';
}
}
以及我的资源声明:
sylius_resource:
resources:
blog.article:
driver: doctrine/orm
classes:
model: BlogBundle\Entity\Article
form:
default: BlogAdminBundle\Form\Type\ArticleType
有人知道问题出在哪里吗?
谢谢大家!
您必须将您的表单注册为 form.type 服务。你必须发送你的形式的参数 class。你应该这样做:
services:
app.form.type.article:
class: BlogAdminBundle\Form\Type\ArticleType
arguments: [BlogBundle\Entity\Article]
tags:
- { name: form.type }
您可以使用以下命令检查您的文章使用了哪些 classes:
php bin/console debug:container | grep article