我在控制器中有一个表单:
$form=$this->createForm(new ServiceCityFormType());
$request = $this->getRequest();
if( $request->isMethod('POST') && $form->isValid() ) {
$form->handleRequest($request);
$form->getData();
}
return ; //the actual page
此表单包含两个字段: - cityPostalCode - cityName
该表格用于了解我的公司是否对用户填写的城市邮政编码进行了一些干预(例如交付)。 所以我比较一下我的业务的postalCode干预是否与表格中的postalCode提交相匹配。
这是另一个控制器中的请求:
// recover the request method here POST
$request = $this->getRequest();
// store the field data input
$postData = $request->request->get('service_city_form'); // note that the form is a service in my app
$postalCode = $postData['cityPostalCode'];
$cityName = $postData['cityName'];
$em=$this->getDoctrine()->getManager();
$postalCodeIntervention = $this->getDoctrine()
->getRepository('EntityBundle:Intervention')
->findOneByPostalCodeIntervention($postalCode);
if (!$postalCodeIntervention) {
// here i redirect to an error page
} else {
// redirect to the good page
}
此处包含我的表单的视图:
{{ form_start(form) }}
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
{{ form_label(form.cityPostalCode, "(*) Entrez un code postal :", {'label_attr': {'class': 'mdl-textfield__label'}}) }}
{{ form_errors(form.cityPostalCode) }}
{{ form_widget(form.cityPostalCode, {'attr': {'class': 'cityPostalCode mdl-textfield__input', 'type' : 'text', 'autocomplete': 'off'}}) }}
</div>
<div style="padding-top: 0.3cm;">
{{ form_label(form.cityName) }}
{{ form_errors(form.cityName) }}
{{ form_widget(form.cityName) }}
</div>
<div style="padding-top: 0.3cm;">
{{ form_rest(form) }}
</div>
{{ form_end(form) }}
我的问题很简单:我想在提交表单时在同一控制器中动态直接设置操作URL。 也就是说不要在另一个控制器中比较POST数据提交,而是直接在同一页面中。
因此,当我提交表单时,如果数据不匹配,则操作URL会更改(返回错误页面),如果数据匹配则更改(返回好页面)。
答案 0 :(得分:1)
你可以在Javascript中做一些非常讨厌的事情。
但老实说,我只是将$_POST
数据发送到验证器脚本,然后将信息/用户发送到右侧页面。它实际上是最具语义的方式。