[英]Symfony2 forms - No Form Builder
Symfony的新手,并试图了解一些东西。 我有index.twig.html,里面有一个表格
<form action="{{ path('SpecialAlertBundle_add') }}" method="post" enctype="multipart/form-data" class="addAlertForm">
<textarea class="addMargin" id="na_command" name="na_command" rows="3" cols="50" placeholder="A20APRLONLAX"></textarea>
<button type="button" class="btn btn-default" id="submit_alert" name="submit_alert">Submit</button>
{{ name }}
</form>
我不会添加所有html,但是它不是标准格式,而是使用Form Builder。
我已设定路线
SpecialAlertBundle_add:
pattern: /
defaults: { _controller: SpecialAlertBundle:Alert:add }
requirements:
_method: GET|POST
这样,当我转到localhost:8000时,该路由就会显示我的形式。 它还说明要使用哪个控制器。 至于控制器,我有
class AlertController extends Controller
{
public function addAction()
{
$request = $this->get('request_stack')->getCurrentRequest();
if ($request->request->has('submit_alert')) {
$name = $request->request->get('na_command');
} else {
$name = 'Not submitted yet';
}
return $this->render('SpecialAlertBundle:Page:index.html.twig', array(
'name' => $name
));
}
}
我要清除的第一件事是控制器中的返回值。 这是我希望它在提交表单后呈现的视图吗?
第二件事是,此刻,模板中的{{name}}始终显示“尚未提交”。 即使我使用数据提交表单,也似乎什么也没有发生。 似乎该按钮什么也不做。 即使在调试控制台中查看,也看不到任何请求。
所以我希望有人可以就我在这里做错的事向我提出建议?
谢谢
首先,为什么不直接在控制器中使用Request而不是request_stack? 请求堆栈主要用于将其注入服务(而不是将请求注入服务)。
因此,您可以执行以下操作:
public function addAction(Request $request)
{}
然后,我建议您将get请求和post请求分开。 只需定义两条不同的路线即可。 例如:
SpecialAlertBundle_add:
pattern: /
defaults: { _controller: SpecialAlertBundle:Alert:add }
requirements:
_method: GET
SpecialAlertBundle_create:
pattern: /
defaults: { _controller: SpecialAlertBundle:Alert:create }
requirements:
_method: POST
之后,您将必须更改表单操作值:将其设置为“ SpecialAlertBundle_create”
现在会更干净。 之后,您只需要检查请求中'submit_alert'属性是否存在。 您可以将'na_command'字段的值分配给$ name:
$name = $request->get('na_command');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.