我一直想知道为什么我的映射和控制器操作不起作用。为此,我需要参考我之前的帖子,其中我描述了我的实体和数据库架构,可以在此处找到。我需要开始一个新帖子,因为没有进一步的更新,我认为这是引起 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 的文档过于全球化,对我的要求来说特别不明确。