Silex 形式 - 方法错误 (POST/GET)
Silex form - Method error (POST/GET)
我对 Silex 表单有疑问。 (一个简单的测试)。
注释来自包:https://github.com/danadesrosiers/silex-annotation-provider
这是我的功能:
/**
* @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>
但是当我提交表单时,出现以下错误:
No route found for "POST /departement/add": Method Not Allowed (Allow: GET)
这是正常的,因为我的路由是GET方法。
而如果我改成POST,我就无法显示视图,因为它是GET方法。
欢迎任何帮助。谢谢!
如果我没看错文档,你应该可以像这样注册多个请求方法
/**
* @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 注释中。
我对 Silex 表单有疑问。 (一个简单的测试)。
注释来自包:https://github.com/danadesrosiers/silex-annotation-provider
这是我的功能:
/**
* @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>
但是当我提交表单时,出现以下错误:
No route found for "POST /departement/add": Method Not Allowed (Allow: GET)
这是正常的,因为我的路由是GET方法。 而如果我改成POST,我就无法显示视图,因为它是GET方法。
欢迎任何帮助。谢谢!
如果我没看错文档,你应该可以像这样注册多个请求方法
/**
* @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 注释中。