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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.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 Symfony表单所选字段实体_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php Symfony表单所选字段实体

Php Symfony表单所选字段实体,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有实体技能,技能有实体语言和关系很多,我在这个表单中创建表单编辑和发布实体技能,每个字段都是空的,但是技能有名称和语言。为什么模板中的字段为空?我不创建新实体,我编辑现有实体。我做错了什么?当我调试时,我看到技能字段不是空的。请帮忙, 我的行动: 在行动中,我尝试 $ln = $entity->getLanguage()->getValues(); 而且有所有的语言技能,为什么在形式上不检查这种语言 /** * Edit skill. * * @Route("/skil

我有实体技能,技能有实体语言和关系很多,我在这个表单中创建表单编辑和发布实体技能,每个字段都是空的,但是技能有名称和语言。为什么模板中的字段为空?我不创建新实体,我编辑现有实体。我做错了什么?当我调试时,我看到技能字段不是空的。请帮忙, 我的行动: 在行动中,我尝试

$ln = $entity->getLanguage()->getValues();
而且有所有的语言技能,为什么在形式上不检查这种语言

  /**
 * Edit skill.
 *
 * @Route("/skills/edit/{id}", name="skill_edit")
 * @Method({"GET", "POST"})
 * @Template()
 * @ParamConverter("entity", class="MyBundle:Skill")
 */
public function editSkillsAction(Request $request, $entity)
{
    $em = $this->getDoctrine()->getManager();
    $form = $this->createForm(new SkillType(), $entity);
    $form->submit($request);
    if ($request->isMethod('POST')) {

        if ($form->isValid()) {

            $em->persist($entity);
            $em->flush();

            return $this->redirect($this->generateUrl('skills_show'));
        }
    }

    return array(
        'debug' => true,
        'form'      => $form->createView(),
    );
}
和形式

        public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('skill',  'text', array('label' => 'Skill Name', 'required' => false))
        ->add('mainSkill','checkbox',
            array(
                'label'    => 'Select for Main Skill?',
                'required' => false,)
                );
            $builder->add('language','entity',
                array(
                    'class'=>'My\MyBundle\Entity\CodeDirectoryProgramLanguages',
                    'property'=>'languages',
                    'multiple'=>true,
                    'expanded' => true,
                     )
            );
    $builder
    ->add('edit','submit')
    ;
}
我的实体

class Skill
{
use Timestampable;
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="main_skill", type="boolean", nullable=true)
 */
private $mainSkill;

/**
 * @var \Artel\ProfileBundle\Entity\CodeDirectoryProgramLanguages
 *
 * @ORM\ManyToMany(targetEntity="CodeDirectoryProgramLanguages", inversedBy="skills", cascade={"persist"})
 */
protected $language;
和CodeDirectoryProgramLanguages

class CodeDirectoryProgramLanguages
{
use Timestampable;
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="languages", type="string", length=255)
 */
private $languages;

/**
 * @ORM\ManyToMany(targetEntity="Artel\ProfileBundle\Entity\Skill", mappedBy="language")
 */
protected $skills;
这是我的模板,非常简单

{% extends 'MyBundle:Dashboard:index.html.twig' %}

{% block form %}

   {{ form(form) }}

{% endblock %}
已解决 在操作中删除$form->submit($request);并在post$form->bind($request)之后添加


也许您的ParamConverter工作不正常,并且没有返回正确的实体

我尝试$skills=$em->getRepository('ArtelProfileBundle:Skill')->findOneById($id);但是当我在操作$ln=$skills->getLanguage()->getValues()时,它与ParamConvertor语言={doctor\ORM PersistentCollection}完全相同;我看到了此技能的所有语言
    if ($request->isMethod('POST')) {
        $form->bind($request);