当前位置: 首页 > 知识库问答 >
问题:

Symfony2收集字段,用于发送电子邮件的简单列表

冯风史
2023-03-14

我试图完成一个非常基本的任务:我想要一个只有一个字段(一个电子邮件地址)的表单和一个“添加”按钮,这样你就可以添加其他电子邮件地址。我稍后会给每个通过的地址发送电子邮件。

我遇到了这个,理论上这正是我需要的。我可以直接在控制器内创建表单,因为我只在这里使用它。以下是控制器内部的功能:

public function createHRAction(Request $request)
{


$data = array();
$form = $this->createFormBuilder($data)
    ->add('emails', 'collection', array(
// each item in the array will be an "email" field
'type'   => 'email',
// these options are passed to each "email" type
'options'  => array(
    'required'  => false,
    'attr'      => array('class' => 'email-box'),
    'prototype' => true,
    'allow_add' => true,
    ),
))->getForm();


$form->handleRequest($request);

if ($form->isValid())
    {
    //$form->bind($request);

    // $data is a simply array with your form fields 
    $data = $form->getData();
    return $this->render('HR/invitationSent.html.twig', array('data' => $data,));
    }
return $this->render('HR/createForm.html.twig', array('form' => $form->createView(),));
}

这是树枝:

{% extends "internal.html.twig" %}

{% block content %}
{{ form_start(form) }}
    {# 

    {# store the prototype on the data-prototype attribute #}
    <ul id="email-fields-list" data-prototype="{{ form_widget(form.emails.vars.prototype)|e }}">
    {% for emailField in form.emails %}
        <li>
            {{ form_errors(emailField) }}
            {{ form_widget(emailField) }}
        </li>
    {% endfor %}
    </ul>

    <a href="#" id="add-another-email">Add another email</a>

     #}
{{ form_end(form) }}

{% endblock content %}

{% block javascripts %}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
    // keep track of how many email fields have been rendered
    var emailCount = '{{ form.emails|length }}';

    jQuery(document).ready(function() {
        jQuery('#add-another-email').click(function(e) {
            e.preventDefault();

            var emailList = jQuery('#email-fields-list');

            // grab the prototype template
            var newWidget = emailList.attr('data-prototype');
            // replace the "__name__" used in the id and name of the prototype
            // with a number that's unique to your emails
            // end name attribute looks like name="contact[emails][2]"
            newWidget = newWidget.replace(/__name__/g, emailCount);
            emailCount++;

            // create a new list element and add it to the list
            var newLi = jQuery('<li></li>').html(newWidget);
            newLi.appendTo(emailList);
        });
    })
</script>
{% endblock %}

我得到以下错误:

“值、属性、形式、id、名称、全名、禁用、标签、标签格式、多部分、块前缀、唯一块前缀、翻译域、缓存键、只读、错误、有效、数据、必需、最大长度、模式、大小、标签属性、复合、方法、操作、提交、允许添加、允许删除”等键组成的数组的键“原型”在HR/createForm中不存在。html。第8行的细枝

我想我通过添加以下行解决了这个问题:

    'prototype' => true,
    'allow_add' => true,

但实际上,这并没有改变任何事情:(

小费?

共有1个答案

慕承恩
2023-03-14

“原型”和“允许添加”是他们自己的选项。“options”是传递给您在“type”中指定的表单类型的数组(在本例中,每个“email”选项都有)。请参阅此处的文档:http://symfony.com/doc/current/reference/forms/types/collection.html

您的表单创建应如下所示:

$this->createFormBuilder($data)
    ->add('emails', 'collection', array(
        'type'      => 'email',
        'prototype' => true,
        'allow_add' => true,
        'options'   => array(
            'required'  => false,
            'attr'      => array('class' => 'email-box'),
        )
    )
)->getForm();
 类似资料:
  • 我编写了一个电子邮件客户端使用简单的java邮件API和it队列发送,但我没有收到任何电子邮件。 执行信息:

  • 我创建了下一个类: 我在我的服务中声明它是一项服务。yml 在我的控制器中,调用服务: 电子邮件已发送,但页面仍在加载30秒,我有一个来自开发人员工具栏的警报:加载Web调试工具栏时发生错误(404:未找到)。您想打开分析器吗?如果接受消息,Symfony分析器不显示任何错误。如果取消,消息开发人员工具栏不会出现。 我做错了什么? 非常感谢。

  • 我使用以下代码从我的应用程序发送电子邮件: 使用上述代码,我可以将电子邮件发送到收件人的电子邮件地址,但是,主题字段为空,收件人字段也为空,而所有收件人都显示在电子邮件的密件抄送字段中。此外,附件以字节字符串的形式出现,而不是可下载的pdf文件。下面是一个示例: user@gmail.com到密件抄送:user@outlook.com,密件抄送:user@domain.com ------=\u

  • 我可以成功地使用下面的代码从控制器发送电子邮件: 我必须如何修改代码以从服务类使用它?

  • 问题内容: 我在linux机器上,我监视进程使用情况。大多数时候,我将离开系统,并且可以在设备上访问Internet。因此,我计划编写一个shell脚本,该脚本可以向我发送该过程的输出。 可能吗? 如果是的话,如何制作一个shell脚本给我发邮件? 请提供摘要以开始使用。 问题答案: 是的,它可以正常工作,并且通常用于:

  • 问题内容: 我有一些PHP代码,用于将表单发送到特定的电子邮件地址。但是,我想在PHP发送时再添加几个电子邮件地址。我怎样才能做到这一点? 谢谢。 问题答案: 这将起作用: