首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制器中的saveAction()从未调用(symfony2)

问控制器中的saveAction()从未调用(symfony2)
EN

Stack Overflow用户
提问于 2016-04-20 15:39:09
回答 1查看 63关注 0票数 0

我是symfony2的初学者。(让我们从这个开始)

我得到了一个必须将数据发送到数据库的表单。但是每次单击submit按钮时,页面都会重新加载自己(我知道为什么),而不会重定向到应该重定向的页面。(页面自称为发送数据,但随后需要重定向)

我看到的是,我的控制器中的saveAction()方法从未被调用过,正如标题中所说的那样。我也搞不懂为什么。

这是我的财务总监:

代码语言:javascript
复制
class ReunionsController extends Controller
{
protected $reunionsService;

/**
 * @Template("IntranetBundle:Reunions:index.html.twig")
 */
public function indexAction($page)
{
    $this->reunionsService = $this->get("intranet.reunions_service");

    if(!$page) {
        $page = 1;
    }

    $pagination = $this->reunionsService->getReunionsByPagination($page);

    // parameters to template
    return array('pagination' => $pagination);
}

/**
 * @Template()
 */
public function createAction(){

    $this->reunionsService = $this->get("intranet.reunions_service");
    $reunion = $this->reunionsService->defaultReunion();

    $form = $this->createForm(new ReunionsType(), $reunion);

    return array(
        'form' => $form->createView(),
    );
}

/**
 * @Template("IntranetBundle:Reunions:create.html.twig")
 */
public function saveAction()
{
    $request = $this->get('request');
    $this->reunionsService = $this->get("intranet.reunions_service");

    $reunion = $this->reunionsService->defaultReunions();

    $form = $this->createForm(new ReunionsType(), $reunion);
    $form->handleRequest($request);

    if ($form->isValid()) {
        $this->reunionsService->saveReunion($reunion);
        $this->get('session')->getFlashBag()->add('notice', 'Reunion ajoutée avec succès');
        return $this->redirect($this->generateUrl('users_reunions'));
    }
    return array(
        'form' => $form->createView(),
    );
}

/**
 * @Template()
 */
public function editAction($id)
{
    $request = $this->get('request');
    if (is_null($id)) {
        $postData = $request->get('reunions');
        $id = $postData['id'];
    }

    $this->reunionssService = $this->get("intranet.reunions_service");
    //on récupere le restaurant via son id
    $reunion = $this->reunionsService->getReunions($id);
    $form = $this->createForm(new ReunionsType(), $reunion);

    return  array('form' => $form->createView(), 'id' => $id, 'date' => $reunion->getReunionDate(), 'CR' => $reunion->getReunionCR());
}

/**
 * @Template("IntranetBundle:Restaurants:edit.html.twig")
 */
public function updateAction($id)
{
    $request = $this->get('request');
    if (is_null($id)) {
        $postData = $request->get('reunions');
        $id = $postData['id'];
    }

    $this->reunionsService = $this->get("intranet.reunions_service");
    $reunion = $this->reunionsService->getReunions($id);

    $form = $this->createForm(new ReunionsType(), $reunion);
    $form->handleRequest($request);

    if ($form->isValid()) {
        $this->reunionsService->updateReunions($reunion);
        $this->get('session')->getFlashBag()->add('notice', 'Objet mis à jour');
    }
    else
        $this->get('session')->getFlashBag()->add('noticeError', 'L\'objet n\'a pu être mis à jour');
    return  array('form' => $form->createView(), 'id' => $id, 'date' => $reunion->getReunionDate(), 'CR' => $reunion->getReunionCR());
}

}

for Service中执行保存的部分(也应该被调用):

代码语言:javascript
复制
public function saveReunion($reunion)
 {
     $this->getEntityManager()->persist($reunion);
     $this->getEntityManager()->flush();
 }

以及表格中用于提交的部分:

代码语言:javascript
复制
<form action="{{ path('users_reunions_save') }}" onsubmit="return testAll()" method="post" {{ form_enctype(form) }}>
            {% include "IntranetBundle:Reunions:formulaire.html.twig" %}
            </fieldset>
            <ul class="sf_list_actions">
                <li class="sf_list_action_list">
                    <a href="{{ path("users_reunions") }}">Retour à la liste</a>
                </li>
                <li class="sf_list_action_save">
                    <input type="submit" value="Enregistrer"/>
                </li>
            </ul>
        </form>

告诉我你还需要什么来帮我解决这个问题。我在网上没有发现任何关于这件事的事.

提前感谢

编辑:这可能(肯定)是一个路由问题。当我写这个的时候:

代码语言:javascript
复制
users_reunions_create:
pattern:  /users/reunions/create
defaults: { _controller: IntranetBundle:Reunions:create }

users_reunions_save:
pattern:  /users/reunions/create
defaults: { _controller: IntranetBundle:Reunions:save }

这是我的问题,但当我写这篇文章:

代码语言:javascript
复制
users_reunions_create:
    pattern:  /users/reunions/create
    defaults: { _controller: IntranetBundle:Reunions:save }

users_reunions_save:
    pattern:  /users/reunions/create
    defaults: { _controller: IntranetBundle:Reunions:save }

它起作用了。但我想走第二条路,一条“拯救”的路

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-20 16:30:06

好的。那完全是路线。实际上,我需要这样写:

代码语言:javascript
复制
users_reunions_create:
pattern:  /users/reunions/create
defaults: { _controller: IntranetBundle:Reunions:create }

users_reunions_save:
pattern:  /users/reunions/save
defaults: { _controller: IntranetBundle:Reunions:save }

但我真的不知道为什么,因为网站上的其他网页都是用我以前想做的路由写的……不管怎么说。好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36748761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档