标签: symfony-forms

在Symfony2/Twig中获取表单小部件名称

所以,我需要做的是在每个输出当前元素的ID field_row.我得到的是使用以下代码覆盖Symfony的默认field_row块:

{% block field_row %}
{% spaceless %}
<div class="clearfix" id="{{ form.get('name') }}-row">
    {{ form_label(form) }}
    <div class="input"&gt;
        {{ form_widget(form) }}
    </div>
</div>
{% endspaceless %}
{% endblock field_row %}
Run Code Online (Sandbox Code Playgroud)

然而,这个{{ form.get('name') }}结构对我来说似乎很尴尬,我确信有一个更文明的方式来做这件事.任何人?

symfony-forms symfony twig

3
推荐指数
1
解决办法
4932
查看次数

Symfony2表单实体到字符串变换器问题

我正在使用Symfony 2.1.3-DEV并尝试将表单转换为字符串(某种ID),然后在提交表单时从字符串返回实体.如果我使用食谱中给出的变换器,问题是一样的:http: //symfony.com/doc/master/cookbook/form/data_transformers.html

控制器代码:

$task = $entityManager->find('AcmeTaskBundle:Task', $id);
$form = $this->createForm(new TaskType(), $task); // so $task->issue is Issue object
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

表单的视图数据应该是Acme\TaskBundle\Entity\Issue类的实例,但是是(n)字符串.您可以通过将"data_class"选项设置为null或通过添加将(n)字符串转换为Acme\TaskBundle\Entity\Issue实例的视图转换器来避免此错误.

问题是,我已经有一个变换器,它转换为TO字符串.

来自Form.php:

if (null !== $dataClass && !$viewData instanceof $dataClass) {
    throw new FormException(
       //...
    );
}
Run Code Online (Sandbox Code Playgroud)

为什么$viewData检查是data_class参数的实例(或给定对象的猜测类型)?是不是视图数据应该是字符串/数组等?我错过了什么吗?

symfony-forms symfony symfony-2.1

3
推荐指数
1
解决办法
5490
查看次数

在Symfony 2中创建具有相同表单的2个不同实体

是否可以创建具有相同形式和操作的2个相关实体?如果有,怎么样?

我想在1step注册中创建一个新用户及其相关问卷.

谢谢,卢卡

php forms symfony-forms symfony-2.1

3
推荐指数
1
解决办法
5146
查看次数


symfony2:尝试将type ="number"属性添加到表单字段

我有这个领域,

 ->add('number', 'number', array(
'label' => false,
'attr' => array('class' => 'producto', 'type' => 'number')))
Run Code Online (Sandbox Code Playgroud)

我期望type="number"添加一个属性,使用小箭头向下/向上增加和减少数字,但我得到一个type ="text"属性的输入:

<input type="text" value="11" class="producto form-control" required="required" name="project_backendbundle_pedido[pedidoSubitems][0][number]" id="project_backendbundle_pedido_pedidoSubitems_0_number">
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony

3
推荐指数
1
解决办法
3593
查看次数

Symfony 2:如何构建一个非常简单的表单,只需一个字段并在控制器中使用它

我正在建立一个入门程序.它非常简单:只需一个电子邮件字段和一个提交按钮.

程序如何工作 我只有一个带有两种方法的控制器:indexAction()endAction() indexAction只是使用注释设置路径并以手工形式显示树枝模板:

namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;

class GetStartedController extends Controller
{
    /**
     * @Route("getstarted")
     * @Template()
     */
    public function indexAction()
    {
        return array(
            // ...
        );
    }

    /**
     * @Route("getstarted/end", name="getStartedEnd")
     * @Template()
     */
    public function endAction(Request $request)
    {

    // ... other code
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,目前该方法确实无效,因为表单是直接在树枝模板中手工制作的.

以下是呈现表单的代码(在twig模板中手工制作):

{% extends "::base.html.twig" %}

{% block title %}AppBundle:GetStarted:index{% endblock %}

{% block body %}
<form id="getStarted" action="{{ path('getStartedEnd') }}" method="post">
    <div class="form-group">
        <input type="email" …
Run Code Online (Sandbox Code Playgroud)

php forms webforms symfony-forms symfony

3
推荐指数
1
解决办法
3052
查看次数

将数组放入会话symfony2中

我有以下代码:

 public function addAction(Request $request){
    $aBasket[] = $request->request->all();
    $this->get('session')->set('aBasket', $aBasket);
    return $this->redirect($this->generateUrl('shop_desktop_homepage'));
    print_r($aBasket);
}
Run Code Online (Sandbox Code Playgroud)

工作正常,但只保存在会话中保存的最后一个数组.如何投入会议.例如,数组像这样保存,只保存最后一个:

array:1 [?
    0 => array:3 [?]
]
Run Code Online (Sandbox Code Playgroud)

但我想保存:

array:1 [?
  0 => array:3 [?]
  1 => array:3 [?]
  2 => array:3 [?]
]
Run Code Online (Sandbox Code Playgroud)

不仅是最后一个.请帮我!!Thx提前.

php arrays session symfony-forms symfony

3
推荐指数
1
解决办法
4158
查看次数

具有子表单的Symfony表单

我在用户表单中有一个用户表单和联系表单,我试图将我的联系表单添加到用户表单中

当我试图添加

$builder->add(
            'contact',
            new ContactType()
        );
Run Code Online (Sandbox Code Playgroud)

它失败了

You cannot add children to a simple form.
Maybe you should set the option "compound" to true?
Run Code Online (Sandbox Code Playgroud)

试图设置化合物,但没有工作

/**
 * {@inheritdoc}
 */
public function configureOptions(OptionsResolver $resolver)
{
    $defaults = array(
        'compound' => true,
        'inherit_data' => true,
    );

    $resolver->setDefaults($defaults);
}
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony symfony-2.6

3
推荐指数
1
解决办法
5013
查看次数

symfony2:获取控制器中的表单错误

我通过AJAX CALL验证了表单,但无法检索“错误消息”。

这是我所说的:

$newRdvForm = $this->createForm(new RdvType());

$newRdvForm->handleRequest($request);

if ($newRdvForm->isValid()) { 
   // set of instructions to be performed when the form is valid
}
else {

   $errors= array();

   foreach ($newRdvForm->getErrors() as $key => $error) {
        $errors[$key] = $error->getMessage();
   }   

   $response = new Response(json_encode($errors));
   $response->headers->set('Content-Type', 'application/json');

   return $response; 

}
Run Code Online (Sandbox Code Playgroud)

我使用了symfony 2.7。上面的代码不会检索错误消息。

symfony-forms symfony

3
推荐指数
1
解决办法
7772
查看次数

Symfony:如何对ArrayCollection使用断言/验证

在Symfony 3中,不允许再使用它cascade_validation.所以你必须为类型做一个断言.但它不起作用,即使字段是BLANK但Assert表示NOtBlank,表单也是有效的.我有一个类参与者,我想在检查我的参与者模型时检查Adults ArrayCollection.

//Participant Model
    /**
         * @var ArrayCollection
         * @Assert\All({
         *     @Assert\Type(type="My\WebsiteBundle\Model\Adult"),
         * })
         */
        protected $adults;

//Adult Model
    class Adult
    {
        /**
         * @var string
         *
     * @Assert\NotBlank()
     */
    protected $salutation;

    /**
     * @var string
     *
     * @Assert\NotBlank()
     */
    protected $firstname;

    /**
     * @var string
     *
     * @Assert\NotBlank()
     */
    protected $lastname;
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony

3
推荐指数
1
解决办法
2200
查看次数