0

我一直想知道为什么我的映射和控制器操作不起作用。为此,我需要参考我之前的帖子,其中我描述了我的实体和数据库架构,可以在此处找到。我需要开始一个新帖子,因为没有进一步的更新,我认为这是引起 Doctrine + Zend Pros 关注的唯一方法。

如上一篇文章所述,我有一个 Zend 表单,用户可以输入 teamId 和 teamName,此外他还可以从表单的下拉列表中选择多个玩家,并可以将玩家分配到团队中。所以基本上这是我用 Doctrine 和 Zend 实现的目标。为此,我编写了上一篇文章中描述的实体,现在我想从我的控制器中添加代码来持久化实体。

控制器:

 public function addAction()
    {
        $form = new TeamForm($this->getEntityManager());

        $form->get('submit')->setAttribute('value', 'Add');

        $request = $this->getRequest();

        if ($request->isPost())
        {
            $team = new Team();
            $player = new Player();
            $teamPlayers = new TeamPlayer();

            $form->setInputFilter($typeset->getInputFilter());

            $form->setData($request->getPost());

            if ($form->isValid())
            {
                $team->populate($form->getData());

                $teamPlayers->setPlayer($player);
                $teamPlayers->setTeam($team);

                $this->getEntityManager()->persist($teamPlayers);

                $this->getEntityManager()->flush();

               //Reroute to the index page once the data is successfully added
            }
        }
        //return form array
        return array(
            'form' => $form
            );
    }

所以这基本上就是我在控制器中将实体保存到两个表(团队表和团队玩家表)中所做的事情,因为玩家表已经填充了数据。所以我想将球员添加到球队并在这两个表中分配这些值。

现在我可以看到我的表单,当我输入数据并按下提交时,什么也没有发生,我可以看到没有任何操作的表单。当数据成功保存到数据库中时,我将其重新路由到未发生的索引页面。

任何帮助将不胜感激,指出我在映射部分或控制器端犯的错误。

官方文档,尤其是来自 Doctrine 2 的文档过于全球化,对我的要求来说特别不明确。

4

1 回答 1

0

让我们尝试通过逐步更新此答案来解决它:

第1步:你的话暗示我,你可能在验证中遇到了一些问题,所以让我们检查一下你是否通过了这个$form->isValid()

 if ($form->isValid())
            {
                $team->populate($form->getData());
                $teamPlayers->setPlayer($player);
                $teamPlayers->setTeam($team);
                $this->getEntityManager()->persist($teamPlayers);
                $this->getEntityManager()->flush();
               //Reroute to the index page once the data is successfully added
            }else{
         var_dump($form->getMessages());

}

我还可以建议您使用教义命令行:doctrine orm:validate-schema,此命令将帮助您检查您的实体映射是否正常以及您的数据库映射是否也可以,我认为调试您的教义2实体很方便 

ps:我还没有深入阅读你的实体

于 2012-10-13T18:57:56.373 回答