symfony3:表单操作不起作用(并为此感到高兴)

时间:2016-12-20 16:56:00

标签: php zurb-foundation symfony

我正在制作一个相当大的symfony3应用程序。这是我的第一个,我必须说我对框架的稳健性感到非常惊讶。这是一个允许用户创建“事件”的应用程序。每个事件都发生在某个“位置”。我有两个捆绑“EventBundle”和“VenueBundle”。场地可以举办许多活动,因此两者之间存在一对多的关系。此时,我有一个带有下拉输入的事件创建页面,该页面自动填充数据库中已有的场所。 EntityType字段使我可以轻松实现该关系。这是一个很棒的symfony功能。

因为在创建新活动时,并非每个场所都已存在于数据库中,我想在事件创建向导中使用一个小的“快速创建场所”模式窗口(基于zurb-foundation)。这是为了防止用户退出向导以添加新的场地。

在过去的两三天左右,我在一个树枝页面上有两个来自不同实体的表格。我已经在这个问题中找到了答案:Symfony - Two forms from two entities on the same page。但答案为我提出了第二个问题。我认为如果我首先展示我现在拥有的代码,我会更容易解释:

 public function createAction(Request $request)
{
    $event = new Event();
    $eventForm = $this->createForm(EventType::class, $event);

    $venue = new Venue();
    $venueQuickForm = $this->createForm(VenueQuickType::class, $venue, array(
        'action' => $this->generateUrl('massiv_venue_quickcreate')
    ));

    $eventForm->handleRequest($request);

    if($eventForm->isSubmitted() && $eventForm->isValid()) {
        $event = $eventForm->getData();

        $event->setPostedBy(1);
        $event->setUpdatedBy(1);

        $em = $this->getDoctrine()->getManager();
        $em->persist($event);
        $em->flush();

        return $this->redirectToRoute('massiv_event_homepage');
    }

    $venueQuickForm->handleRequest($request);

    if($venueQuickForm->isSubmitted() && $venueQuickForm->isValid()) {
        $venue = $venueQuickForm->getData();

        $venue->setPostedBy(1);
        $venue->setUpdatedBy(1);

        $em = $this->getDoctrine()->getManager();
        $em->persist($venue);
        $em->flush();
    }

在第二种形式的createForm方法(venueQuickForm)中,我添加了一个选项“action”,其中一个url指向场地控制器的quickcreate动作。这是我的想法,在找到答案之前我已经在我的代码中使用了这个,但保留了这一行以了解它的行为方式。事实证明它被忽略了,因为在那个quickCreateAction方法中我简单地设置了一个“ok”响应,当按下提交按钮时,该页面不显示。其余的代码工作正常,场地保存在数据库中。

所以我即将删除该行,但上面的代码确实是要走的路吗?直觉上我想保持两个代码分开,所以将“保存地点”部分放在Venue控制器中似乎对我来说是位置或者这不是Symfony的工作方式吗?

0 个答案:

没有答案