Php symfony3表格,can';无法在buildForm方法中获取选项
我真的不知道该给这个帖子取哪个标题,但是,我正在v3.1.6中的一个Symfony项目中工作,并在我的表单字段中使用select2插件和ajax 我想使用表单组件的事件(submit和pre_set_data)进行创建和编辑,以便像这样动态更改字段。在我提交表单并出现错误之前,一切正常。注意:未定义变量:选项 我的表单类型代码在这里Php symfony3表格,can';无法在buildForm方法中获取选项,php,forms,symfony,symfony-3.1,Php,Forms,Symfony,Symfony 3.1,我真的不知道该给这个帖子取哪个标题,但是,我正在v3.1.6中的一个Symfony项目中工作,并在我的表单字段中使用select2插件和ajax 我想使用表单组件的事件(submit和pre_set_data)进行创建和编辑,以便像这样动态更改字段。在我提交表单并出现错误之前,一切正常。注意:未定义变量:选项 我的表单类型代码在这里 namespace Xxx\ArticleBundle\Form; use Symfony\Component\Form\AbstractType; use Sy
namespace Xxx\ArticleBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Xxx\ArtistBundle\Repository\ArtistRepository;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Ivory\CKEditorBundle\Form\Type\CKEditorType;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Doctrine\ORM\EntityManager;
class ArticleType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
//$em = $options['em']; //this give me same error
$builder
->add('artist', EntityType::class, array(
'class' => 'XxxArtistBundle:Artist',
'choice_label' => 'artist_name',
'multiple' => false,
'expanded' => false))
->add('title', TextType::class)
->add('categories', EntityType::class, array(
'class' => 'XxxArticleBundle:Category',
'choice_label' => 'name',
'multiple' => true,
'expanded' => true))
->add('image', ChoiceType::class, array(
'expanded' => false,
'multiple' => false))
->add('intro', CKEditorType::class)
->add('content', CKEditorType::class);
$formModifier = function (FormInterface $form, $image) {
$listImages = $options['em']->getRepository('XxxAppBundle:Image')->find($image)); //this line give me the error
if (!$listImages) {
return; //i will add a FormError in the field
}
$listImages = array();
die(var_dump($listImages));
$form->add('image', EntityType::class, array(
'class' => 'XxxAppBundle:Image',
'choices' => $listImages,
));
};
$builder->get('image')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($formModifier) {
$image = $event->getForm()->getData();
//die(var_dump($image)); //select2 field, returned null (but it's not the question
//die(var_dump($options)); returned error 500 Notice: Undefined variable: options
$formModifier($event->getForm()->getParent(), $image);
}
);
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Xxx\ArticleBundle\Entity\Article',
));
$resolver->setRequired('em');
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'xxx_articlebundle_article';
}
}
我还想说的是,我们的目标是在从仪表板创建帖子时,拥有一个类似于Wordpress的UI,对于在文章中设置图像,当选择图像时,将其放入用户标记中,而不使用entityType,因为它将有1000个,所以我选择了一个choiceType与select2插件一起使用,但如果有人得到了更好的解决方案,我会使用它
Thx提前获取帮助当您在闭包中使用父作用域中的变量时,应将其传递给language construct
$formModifier = function (FormInterface $form, $image) use ($options) {
$listImages = $options['em']->getRepository('XxxAppBundle:Image')->find($image)); //this line give me the error
if (!$listImages) {
return; //i will add a FormError in the field
}
$listImages = array();
die(var_dump($listImages));
$form->add('image', EntityType::class, array(
'class' => 'XxxAppBundle:Image',
'choices' => $listImages,
));
};
当您在闭包中使用来自父作用域的变量时,应该将其传递给语言构造
$formModifier = function (FormInterface $form, $image) use ($options) {
$listImages = $options['em']->getRepository('XxxAppBundle:Image')->find($image)); //this line give me the error
if (!$listImages) {
return; //i will add a FormError in the field
}
$listImages = array();
die(var_dump($listImages));
$form->add('image', EntityType::class, array(
'class' => 'XxxAppBundle:Image',
'choices' => $listImages,
));
};
当然,就是这样,它现在工作了很多Mikhail P,所以我要找到为什么我的字段返回空值当然,就是这样,它现在工作了很多Mikhail P,所以我要找到为什么我的字段返回空值