symfony2创建没有实体类的表单

2024-03-19

使用Symfony2.3.​​4。

我正在尝试创建一个不使用类型的表单,它实际上是一个非常小的表单,只有两个选择从数据库加载它们的选项,到目前为止它有效,我不能做的是获取表单数据(在控制器)提交时。我尝试按照说明进行操作here http://symfony.com/doc/current/book/forms.html#using-a-form-without-a-class但我做不到。

到目前为止,这是我的代码:

控制器: 将数据传递到表单的函数:

public function selectAction($id, $id_actpost){
        $em = $this->getDoctrine()->getManager();

        $entity = $em->getRepository('ActPostBundle:Edition')->find($id);
        $students = $em->getRepository('PersonBundle:Students')->findAll();
        $students2 = $em->getRepository('PersonBundle:ForeignStudents')->findAll();

        if (!$entity) {
            throw $this->createNotFoundException('Unable to find Edicion entity.');
        }

        return $this->render('ActPostBundle:Edition:select.html.twig', array(
                    'entity' => $entity,
                    'id_actpost' => $id_actpost,
                    'students' => $students,
                    'foreignstudents' => $students2,
        ));
    }

关于表单本身的 html 片段:

    <form class="form-horizontal sf_admin_form_area"
              action="{{ path('edition_update_selected',
           { 'id': entity.id, 'id_actpost': id_actpost }) }}"
              method="post" enctype="multipart/form-data">
            <div  style="margin-left: 80px" class="row-fluid">
                <div class="span12">
                   <select name="students" multiple="multiple">
                   {% for s in students %}
                     <option {%if s in entity.students%}selected="selected"{%endif%}>
                      {{s}}</option>
                   {%endfor%}
                   </select>
                </div>
            </div>

            <div class="row-fluid">
               <select name="students2" multiple="multiple">
                  {% for s in students2 %}
                     <option {%if s in entity.foreignstudents%}selected="selected"
                       {%endif%}>{{s}}</option>
                  {%endfor%}
               </select>
            </div>
            <div class="form-actions">
                <button type="submit" class="btn btn-primary">
                    <i class="glyphicon-refresh"></i> {{'Update' | trans}}</button>
                <a class="btn" href="{{ path('edition', {'id_actpost' : id_actpost }) }}">
                    <i class="glyphicon-ban-circle"></i> {{'Cancel' | trans }}
                </a>
            </div>
        </form>

这是我从开头发布的链接中读到的内容: 函数来获取提交的数据并更新数据库,尽管数据库部分可以保持忽略,直到我设法从表单中获取数据:

public function update_selectedAction(Request $request, $id, $id_actpost) {
        $em = $this->getDoctrine()->getManager();

        $entity = $em->getRepository('ActPostBundle:Edition')->find($id);

        if (!$entity) {
            throw $this->createNotFoundException('Unable to find Edicion entity.');
        }

        $defaultData = array('message' => 'Type here');
        $editForm = $this->createFormBuilder($defaultData)
                ->add('students','choice')
                ->add('students2', 'choice')
                ->getForm();

        $editForm->handleRequest($request);

我想知道我读到的内容是否真的是我需要的,因为尽管我认为它是我可能是错的,所以任何关于这个问题的见解,甚至任何其他方法,都将非常感激。


您应该使用 symfony 的表单构建器在您的应用程序中构建表单update_selectedAction() like

public function update_selectedAction(Request $request, $id, $id_actpost)
{
    $em = $this->getDoctrine()->getManager();
    $entity = $em->getRepository('ActPostBundle:Edition')->find($id);
    if (!$entity) {
        throw $this->createNotFoundException('Unable to find Edicion entity.');
    }
    $defaultData = array('message' => 'Type here');
    $form = $this->createFormBuilder($defaultData)
        ->add('students', 'entity',array('class' => 'PersonBundle:Students',
            'property' => 'students','expanded'=>false,'multiple'=>false))
        ->add('students2', 'entity',array('class' => 'PersonBundle:ForeignStudents',
                    'property' => 'foreignstudents','expanded'=>false,'multiple'=>false))
    ->add('submit','submit')
    ->getForm();
    if ($request->getMethod() == "POST") {
        $form->submit($request);
        if ($form->isValid()) {
            $postData = current($request->request->all());
            var_dump($postData); /* All post data is here */
           /* echo  $postData['students']; */
           /* echo  $postData['students2']; */
            /*
             * do you update stuff here
             * */
        }
    }
    return $this->render('ActPostBundle:Edition:select.html.twig', array('form'=>$form->createView()));
} 

在你的树枝中,即ActPostBundle:Edition:select.html.twig呈现您的表单

{{ form(form) }}

根据评论编辑

在你的树枝文件中渲染你的表单,就像

{{ form_errors(form) }}
{{ form_row(form.students) }}
{{ form_row(form.students2) }}
{{ form_row (form._token) }}
<input type="submit"> /* your submit button */

编辑评论2

如果您想将文本放入选择框的值属性中,您可以使用选择字段类型

$students = $em->getRepository('PersonBundle:Students')->findAll();
$students2 = $em->getRepository('PersonBundle:ForeignStudents')->findAll();
$studentsArray=array();
$students2Array=array();
foreach($students as $s){
$studentsArray[$s->getStudents()]=$s->getStudents();
}
foreach($students2 as $s){
$students2Array[$s->getForeignstudents()]=$s->getForeignstudents();
/* here array key part will be the value of selectbox like  $students2Array['your val to get in post data'] */
}
$form = $this->createFormBuilder($defaultData)
  ->add('students', 'choice',array('choices' => $studentsArray,'expanded'=>false,'multiple'=>false))
  ->add('students2', 'choice',array('choices' => $students2Array,'expanded'=>false,'multiple'=>false))
        ->add('submit','submit')
        ->getForm();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

symfony2创建没有实体类的表单 的相关文章

随机推荐

  • 如何在javascript中添加到所有浏览器的收藏夹/书签[重复]

    这个问题在这里已经有答案了 我在使用 java 脚本的 添加到收藏夹 书签网页 中有一些查询 我只是在这个中进行了查询Link http www apphp com index php snippet javascript add to f
  • NSURLSession 委托方法未调用

    我创建了一个非常简单的应用程序来从我的网络服务器下载文本文件 我可以与 NSURLConnection 完美配合 但我正在尝试迁移到 NSURLSession 我遇到的问题是没有调用任何委托方法 我的服务器受密码保护 因此我需要使用基本的
  • Mac Catalyst 上的应用程序内购买不起作用

    应用内购买对于我的 iOS 方面来说效果很好 StoreKit 中的数据已按其应有的方式填充 相同的代码不适用于该项目的 Mac Catalyst 版本 我什至在 App Store 上为我的 Mac 应用程序创建了一个列表 并与应用程序内
  • ANTLRWorks 1.4.3 无法正确读取扩展 ASCII 字符

    我正在开发一个相当标准的编译器项目 我选择 ANTLR 作为解析器生成器 在将现有语法从 v2 更新到 v3 时 我注意到 ANTLRWorks ANTLR 的官方 IDE 无法正确显示文件中的任何扩展 ASCII 字符 即使使用 Note
  • HTML Div 宽度溢出:自动?

    我正在创建一个div像下面这样 编辑 这是一个例子 table tr td div style max height 15em div td tr table
  • 无法加载文件或程序集“Oracle.DataAccessVersion=9.2.0.700,Culture=neutral,PublicKeyToken=89b483f429c47342”

    无法加载文件或程序集 Oracle DataAccess Version 9 2 0 700 Culture neutral PublicKeyToken 89b483f429c47342 或其依赖项之一 找到的程序集的清单定义与程序集引用
  • React Native Airbnb Markers:标记成功消失,但没有重新出现

    我目前正在使用 React Native 构建一个应用程序 并使用 Airbnb 地图插件来动态显示标记 我的标记已成功从 firebase 数据库下载 并且下载的数组始终显示正确的内容 我这里有完整的代码以防万一https codepen
  • 相当于android中的timeIntervalSinceReferenceDate

    有没有一种方法可以计算相对于日期的时间间隔 与 iPhone 中的 timeIntervalSinceReferenceDate 非常相似 谢谢 System currentTimeMillis 返回自 1970 年 1 月 1 日午夜以来
  • 使用 bootstrap/angularjs 可编辑组合框

    我没有得到任何将组合框作为选择和输入的解决方案 这意味着如果用户选择不在每个填充列表中 那么用户应该能够输入他的选择值 用户的选择 选择或输入 应该在 AngularJS 中作为 ng model 进行设置和检索 thanks ui sel
  • 在 Perl 中我应该使用什么来代替 printf ?

    我需要在 Perl 中使用一些字符串替换来简化翻译 即替换许多 print Outputting n numbers 通过类似的东西 printf Outputting d numbers n 但是 我想用更易于人类解析的内容替换 prin
  • 如何仅使用查找和替换来查找并计算字符串中子字符串的所有出现次数?

    输入需要更低 最后程序必须打印出现的次数 例如内存 smthing str input if smthing smthing lower smthing find mem 我对此彻底崩溃了 所以我无法走多远 我忘了告诉你我不能使用计数或列表
  • openlayers 3 可以使用 gif 渲染动画标记吗

    我想问如何让标记像 openlayers 2 一样显示动画 gif 图片 它可以显示动画标记 我想要的是显示动画 gif 标记而不使标记移动 这可能吗 style anchorXUnits fraction anchorYUnits pix
  • 如何在 Emacs 中为 LaTeX 模式定义两个 ispell 字典?

    我有一份包含许多第二语言引文的文档 我如何将第二语言定义为 Ispell 我在文件顶部有这个 Local IspellDict brasileiro 我尝试了这个 但没有成功 Local IspellDict brasileiro engl
  • Java 中的异步事件调度

    我正在将 C 程序移植到 Java 该程序大量使用委托和委托的BeginInvoke异步通知事件的方法 以数据通信线程为例 它可能必须将其状态以及 GUI 通知给另一个工作线程 在我看来 通知不同班级的各种事件的最佳方法是有一个IClass
  • JavaScript 中的 getElementsByClassName().forEach() 函数不起作用

    我试图使用 JavaScript 通过类名获取 HTML 的每个元素 然后根据 a 中的值更改其高度和宽度range object onchange 浏览器显示错误 document getElementsByClassName forEa
  • VB6 有什么好的 TDD 工具或资源吗?

    是的 我知道我已经落后于时代了 但是我这里有一个古老的 VB6 编辑器应用程序 我相信没有人会很快升级到 NET 它使用了几个第三方 DLL 工具 并且由于它仍然使用旧的 RichEdit 控件 我基本上可以仅用这个工具来创建我自己的 Bu
  • 匹配法语和德语字符的正则表达式

    我正在解析请求参数以查找任何易受攻击的字符以防止 XSS 威胁 我们的网络应用程序支持英语以外的法语和德语 我使用以下正则表达式来实现此目的 但它无法处理法语和德语 a zA Z0 9 r n 对此的任何建议都将受到高度赞赏 p L 将匹配
  • 如何确定 PostScript 字体的高度和深度?

    我正在寻找估计 PostScript 字体高度 上升部分的空间 和深度 下降部分的空间 的 PostScript 代码 字体的边界框可以吗 FontBBox 用于此目的 这是我的问题的一些背景 字体的字形位于基线上 显然 带有下降部分的字形
  • 使用并行赋值交换数组元素

    感兴趣这个问题 https stackoverflow com questions 4181808 swapping in ruby 我玩过一些数组和方法调用的并行赋值 这是一个典型的示例 尝试按数组中的值交换两个成员 deck A B C
  • symfony2创建没有实体类的表单

    使用Symfony2 3 4 我正在尝试创建一个不使用类型的表单 它实际上是一个非常小的表单 只有两个选择从数据库加载它们的选项 到目前为止它有效 我不能做的是获取表单数据 在控制器 提交时 我尝试按照说明进行操作here http sym