Assetic Bundles 缓存 Composer 配置 控制台 控制器 调试 部署 Doctrine 电子邮件 事件分发器 表达式 表单 前端 日志 分析器 请求 路由 安全 序列化 服务容器 会话 PSR 7 Symfony 版本 模板 测试 升级 验证 Web 服务器 Web 服务 工作流

发布于 2015-12-06 07:21:17 | 323 次阅读 | 评论: 0 | 来源: 网络整理

[handleRequest()](http://api.symfony.com/2.7/Symfony/Component/Form/FormInterface.html#handleRequest()) 方法是在 Symfony 2.3 中引进的。

有了 handleRequest() 方法,处理表单提交就简单多了:

use Symfony\Component\HttpFoundation\Request;
// ...

public function newAction(Request $request)
{
    $form = $this->createFormBuilder()
        // ...
        ->getForm();

    $form->handleRequest($request);

    if ($form->isValid()) {
        // perform some action...

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

    return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
        'form' => $form->createView(),
    ));
}

有关这个方法的更多细节详见处理表单提交

手动调用 Form::submit()

在 Symfony 2.3 之前,submit() 方法叫做 bind()

在某些情况下,你可能想要对何时你的表单被提交以及什么数据传递到它有更好的控制。代替使用 [handleRequest()](http://api.symfony.com/2.7/Symfony/Component/Form/FormInterface.html#handleRequest()) 方法,直接将提交的数据传递到 [submit()](http://api.symfony.com/2.7/Symfony/Component/Form/FormInterface.html#submit()):

use Symfony\Component\HttpFoundation\Request;
// ...

public function newAction(Request $request)
{
    $form = $this->createFormBuilder()
        // ...
        ->getForm();

    if ($request->isMethod('POST')) {
        $form->submit($request->request->get($form->getName()));

        if ($form->isValid()) {
            // perform some action...

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

    return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
        'form' => $form->createView(),
    ));
}

包含嵌套字段的表单期望在 [submit()](http://api.symfony.com/2.7/Symfony/Component/Form/FormInterface.html#submit()) 中的一个数组。你也可以同直接在字段上调用 [submit()](http://api.symfony.com/2.7/Symfony/Component/Form/FormInterface.html#submit()) 提交独立的字段:

$form->get('firstName')->submit('Fabien');

向 Form::submit() 传递一个请求(不赞成)

在 Symfony 2.3 之前,submit 方法叫做 bind

在 Symfony 2.3 之前,[submit()](http://api.symfony.com/2.7/Symfony/Component/Form/FormInterface.html#submit()) 方法接受请求对象作为方便的捷径到前一个例子:

use Symfony\Component\HttpFoundation\Request;
// ...

public function newAction(Request $request)
{
    $form = $this->createFormBuilder()
        // ...
        ->getForm();

    if ($request->isMethod('POST')) {
        $form->submit($request);

        if ($form->isValid()) {
            // perform some action...

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

    return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
        'form' => $form->createView(),
    ));
}

请求直接传递到 [submit()](http://api.symfony.com/2.7/Symfony/Component/Form/FormInterface.html#submit()) 依然有效,但是我们不推荐并且这将会在 Symfony 3.0 中移除。作为替代你应当看看 [handleRequest()](http://api.symfony.com/2.7/Symfony/Component/Form/FormInterface.html#handleRequest()) 方法。

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务