当提交表单并再次显示刷新后,请求被绑定以形成并显示所选值。如果之前没有提交表单,我想用外部数组(在我的情况下是session)中的数据来保存表单。 Form是数组类型,未连接到任何实体,因为它作为db filter。
我选择了表格字段展开,多个(复选框)配置如下:
$categoryForm = array();
$form = $this->createFormBuilder( $categoryForm )
->add( 'id', 'choice', array( 'choices' => $arrayOfChoices,
'multiple' => true,
'expanded' => true ) )
->getForm();
if ( $request->getMethod() == 'POST' ) {
$form->bindRequest( $request );
}
答案 0 :(得分:0)
您必须将变量传递给表单(在控制器中),然后在构建器类中使用传递的变量。
答案 1 :(得分:0)
这不是一件容易的事,但经过几个小时的思考后,我设法做到了。下面我展示了我的代码非常适合将数据从会话移动到窗体,反之亦然
//bind filters from session to form
$sessionFilter = $session->get('filter');
if ( !is_null( $sessionFilter ) ) {
$form->bind( $sessionFilter );
}
if ( $request->getMethod() == 'POST' ) {
$form->bindRequest( $request );
$formData = $form->getData();
if ( count($formData) > 0 ) {
foreach ( $formData as $fdkey => $data ) {
if ( $fdkey == 'id' OR $fdkey == 'morezero' ) {
foreach ( $data as $value ) {
$sessionData[$fdkey][$value] = $value ;
}
}
}
$session->set( 'filter', $sessionData );
}
}