Symfony/doctrine 在坚持之前在文本区域滑动元素

Symfony/doctrine slip element in textarea before persist

嗨,我是 symfony2 的新手,我想做一件事

在我看来有一个文本区域,在这个文本区域中我想输入一些名称,每行一个,例如:

john
frank
...

我想将每一个都保存在数据库中...

我在控制器中有:

    $formBuilderMultiple = $this->container
        ->get('form.factory')
        ->createNamedBuilder('formMultiple', 'form', NULL)
        ->add('users', 'textarea')
        ->add('add', 'submit');

    $formMultiple = $formBuilderMultiple->getForm();


    if ($formMultiple->handleRequest($request)->isValid()) {

       // what to write here??


    }

我想做这样的事情:

foreach(explode("\n", $formMultiple->users) as $line) {
     var_dump($line);
}

我该怎么办?

谢谢 :D

此类工作的两个最佳解决方案是:

1) 将 FormEvents::POST_SUBMIT 事件的事件侦听器添加到字段 users,您将在其中获取提交的值并根据需要进行处理,然后以新表单重新提交。更多:http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html

2) 使用数据转换器:您可以创建一个数据转换器,根据给定的分隔符 imploding/exploding 将字符串转换为数组,并将数组转换为字符串。更多:http://symfony.com/doc/current/cookbook/form/data_transformers.html

但是你也可以在你的控制器中做所有这些事情,不推荐这样做:

$submittedFormData = $formMultiple->getData();
foreach(explode("\n", $submittedFormData['users']) as $user) {
    var_dump($user);
}