Silex表单 - 方法错误(POST / GET)

时间:2017-01-11 19:53:02

标签: php forms http twig silex

我的Silex表格有问题。 (一个简单的测试)。

注释来自捆绑包:https://github.com/danadesrosiers/silex-annotation-provider

这是我的功能:

$images = SQL::select('SELECT `id`, `link` 
                        FROM `govdocs_images` 
                        WHERE `group` = FROM_UNIXTIME(' . $group . ')
                        ORDER BY RAND()
                        LIMIT 1');
$row = $images[0];
// print link and image html.
echo '<a href="' . $row['link'] . '">';
echo '<img src="/myFilePath/img.php?id=' . $row['id'] . '"/>';
echo '</a>';

这是我的观点:

/**
     * @SLX\Route(
     *      @SLX\Request(method="GET", uri="add"),
     *      @SLX\Bind(routeName="departement.add")
     * )
     */
    public function add(Application $app, Request $request)
    {   
        $data = [];
        $form = $app['form.factory']->createBuilder(FormType::class, $data)
        ->add('nom_dep',null,array('label' => 'Nom :'))
        ->getForm();

        $form->handleRequest($request);

        if ($form->isValid()) {
            $data = $form->getData();

            dump("test");die();
            return $app->redirect($app["url_generator"]->generate("departement.index"));
        }

        // display the form
        return $app['twig']->render('departement/new.html.twig', array('form' => $form->createView()));
    }

表格的结果:

{{ form_start(form, { 'attr': { 'class': 'form-horizontal form-condensed', 'role': 'form' } }) }}
    <fieldset>
    <legend>Création</legend>
        <div class="row">
            <div class="col-sm-12">
                <div class="form-group">
                    <label for="{{ form.nom_dep.vars.id }}" class="col-lg-2 control-label">Nom :</label>
                    <div class="col-lg-10">
                       {{ form_widget(form.nom_dep,{'attr': {'class': 'form-control'}}) }}
                    </div>
                </div>
                <div style="margin-top: 50px;" class="form-group">
                    <div class="col-lg-10 col-lg-offset-2">
                    <input type="submit" value="Créer" class="btn btn-info" />
                    </div>
                </div>
            </div>
        </div>
    </fieldset>
{{ form_end(form) }}

但是当我提交表单时,我收到以下错误:

<form name="form" method="post" class="form-horizontal form-condensed" role="form">
    <fieldset>
    <legend>Création</legend>
        <div class="row">
            <div class="col-sm-12">
                <div class="form-group">
                    <label for="form_nom_dep" class="col-lg-2 control-label">Nom :</label>
                    <div class="col-lg-10">
                       <input type="text" id="form_nom_dep" name="form[nom_dep]" required="required" class="form-control">
                    </div>
                </div>
                <div style="margin-top: 50px;" class="form-group">
                    <div class="col-lg-10 col-lg-offset-2">
                    <input type="submit" value="Créer" class="btn btn-info">
                    </div>
                </div>
            </div>
        </div>
    </fieldset>
<input type="hidden" id="form__token" name="form[_token]" value="CGhbs1VCxoJ1DFHkLKodt9bRaEZCH1JEoqYJh8TK7I8"></form>

这是正常的,因为我的路线是在GET方法中。 如果我改为POST,我就无法显示视图,因为它是GET方法。

欢迎任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

如果我正确阅读了文档,您应该可以注册多个请求方法,例如

/**
     * @SLX\Route(
     *      @SLX\Request(method="GET", uri="add"),
     *      @SLX\Request(method="POST", uri="add"),
     *      @SLX\Bind(routeName="departement.add")
     * )
     */
    public function add(Application $app, Request $request)
    {  

<子> @Request注释将uri模式与控制器方法相关联。如果给出了多个@Request注释,则所有修饰符都将应用于所有@Requests,除非它们包含在@Route注释中。