标签: symfony-forms

创建Symfony2表单主题 - 字段集和列表样式

我正在使用symfony2.我试图覆盖树枝中的默认div样式表单块.

首先,有没有或知道fieldset和list(ul - > li)方法的可用实现?

php symfony-forms symfony twig

8
推荐指数
1
解决办法
8411
查看次数

表单集合错误

我正在尝试采用一种表单类型并显示它,但是我需要用户一次上传补丁上传.所以说上传30个文件,页面上有30个表格.我收到此错误:

表单的视图数据应该是标量,数组或\ ArrayAccess的实例,但是类MS\CoreBundle\Entity\Photo的实例.您可以通过将"data_class"选项设置为"MS\CoreBundle\Entity\Photo"或通过添加视图转换器来避免此错误,该转换器将类MS\CoreBundle\Entity\Photo的实例转换为标量,数组或\的实例ArrayAccess接口.

图库类型代码是:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('photo', 'collection', array(
        'type' => new PhotoType(),
        'allow_add' => true,
        'data_class' => 'MS\CoreBundle\Entity\Photo',
        'prototype' => true,
        'by_reference' => false,
    ));
}
Run Code Online (Sandbox Code Playgroud)

照片类型代码是:

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('description', 'text', array('label' => "Title:", 'required' => true))
                ->add('File')
                ->add('album', 'entity', array(
                    'class' => 'MSCoreBundle:Album',
                    'property' => 'title',
                    'required' => true,
                    'query_builder' => function(EntityRepository $er)
                    {
                        return $er->createQueryBuilder('a')
                            ->orderBy('a.title', 'ASC');
                    },
                ))
        ;
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array( …
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony

8
推荐指数
1
解决办法
9721
查看次数

将问卷与表单中的用户实体相结合 - symfony2

我需要在我的注册表中添加多项选择题的问卷.问题和选项分为两个实体:

<?php

namespace Me\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * Question
 *
 * @ORM\Table(name="question")
 * @ORM\Entity(repositoryClass="Me\UserBundle\Entity\QuestionRepository")
 */
class Question
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="questionText", type="text")
 */
private $questionText;

/**
 * @var boolean $expanded
 *
 * @ORM\Column(name="expanded", type="boolean")
 */
private $expanded;

/**
 * @var boolean $multiple
 *
 * @ORM\Column(name="multiple", type="boolean")
 */
private $multiple;

/**
 * @var Questionnaire $questionnaire
 *
 * @ORM\ManyToOne(targetEntity="Questionnaire", …
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony doctrine-orm symfony-2.3

8
推荐指数
1
解决办法
1562
查看次数

Symfony2 FOSRestBundle PUT Action FORM返回空结果

我正在使用Symfony 2.2和最新版本的FOSRestBundle.所以我设法让大多数动作都有效,但我似乎遇到了FormBuilder的问题,我正在通过PUT调用请求.

我检查了请求对象,它来自我的Backbone.je模型​​,因为它应该(.save())但是在绑定到表单后,实体返回只有id导致flush()抛出错误,因为必需的字段没有填补.

控制器中的操作:

header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS ');
header('Allow GET, POST, PUT, DELETE, OPTIONS ');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type, *');

use FOS\RestBundle\Controller\FOSRestController;
use FOS\RestBundle\Controller\Annotations as Rest;
use FOS\RestBundle\Routing\ClassResourceInterface;
use FOS\Rest\Util\Codes;
use Symfony\Component\HttpFoundation\Request;
use Greenthumbed\ApiBundle\Entity\Container;
use Greenthumbed\ApiBundle\Form\ContainerType;

class ContainerController extends FOSRestController implements ClassResourceInterface
{
/**
 * Put action
 * @var Request $request
 * @var integer $id Id of the entity
 * @return View|array
 */
public function putAction(Request $request, $id)
{
    $entity = $this->getEntity($id);
    $form = $this->createForm(new …
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony fosrestbundle

8
推荐指数
3
解决办法
9746
查看次数

从嵌套表单中调用$ builder-> getData()始终返回NULL

我试图以嵌套的形式存储数据,但在调用时$builder->getData()我总是得到NULL.

有谁知道如何在嵌套表单中获取数据?

这是ParentFormType.php:

class ParentFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('files', 'collection', array(
            'type'          => new FileType(),
            'allow_add'     => true,
            'allow_delete'  => true,
            'prototype'     => true,
            'by_reference'  => false
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

FileType.php

class FileType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // Each one of bellow calls returns NULL
        print_r($builder->getData());
        print_r($builder->getForm()->getData());
        die();

        $builder->add('file', 'file', array(
            'required'    => false,
            'file_path'   => 'file',
            'label'       => 'Select a file to be uploaded', …
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony symfony-2.3

8
推荐指数
3
解决办法
7144
查看次数

Symfony FormType getParent vs Inheritance

在Symfony中创建自定义字段时,我们定义了一个getParent方法

我们通过从AbstractType类扩展来定义我们的类,然后使用getParent方法返回父类型.而不是从父类扩展.

我想知道这种方法背后的哲学.

是否可以定义我的自定义类型:

class ImageType extends FileType
{
    public function getName()
    {
        return 'image';
    }
}
Run Code Online (Sandbox Code Playgroud)

而不是这个:

class ImageType extends AbstractType
{
    public function getParent()
    {
        return 'file';
    }

    public function getName()
    {
        return 'image';
    }
}
Run Code Online (Sandbox Code Playgroud)

如果能,那么这两种方法有什么区别?

谢谢!

symfony-forms symfony

8
推荐指数
2
解决办法
3212
查看次数

更新/编辑上下文中的sfValidatorDoctrineUnique

我在两个单独的上下文中使用表单类:既创建新记录又编辑该记录.我按如下方式设置了一个后验证器,以检查URL字段是否唯一.

$this->validatorSchema->setPostValidator(new sfValidatorAnd(array(
   new sfValidatorDoctrineUnique(array('model' => 'Page', 'column' => array('url')), array('invalid' => 'This URL already exists.'))
)));
Run Code Online (Sandbox Code Playgroud)

当我创建新记录时,验证器工作得很好.但是,在编辑现有记录时,它会抛出错误,因为它将自身检测为重复.换句话说,如果我编辑记录但不对URL进行任何更改,则会引发重复错误.

这一定是一个常见问题,所以我想知道Symfony处理这个问题的方法是什么?基本上我希望它在保存时忽略自身(不存在重复),但仍然运行后验证器以确保不存在真正的重复.

doctrine symfony1 symfony-1.4 symfony-forms

7
推荐指数
2
解决办法
3049
查看次数

Symfony管理生成器 - 用于保存和返回列表的按钮

如何在视图中添加保存和返回列表按钮以创建新记录?一般来说,我想要更多的按钮,所以我正在寻找一个通用的答案.

编辑:默认生成器为我提供了两个按钮:

  1. 保存
  2. 保存并添加

我想要一个按钮saves and takes me back to the list.而且我还想要一个带有自定义动作的自定义按钮.

让我解释一下实际情况:

我有一个列表操作create,将我带到一个具有一些输入字段的表单.现在我想使用这些字段的数据制作图像.我想在表单的右侧将此图像显示为预览.为此我需要一个预览按钮,这样无论何时按下,它都会将数据提交给自己进行预览和进一步修改.

我希望现在更清楚了.

php symfony1 symfony-1.4 admin-generator symfony-forms

7
推荐指数
1
解决办法
3917
查看次数

从Twig中的表单访问映射的实体

我有一个映射到表单的实体,但我不希望所有字段都可编辑,但仍希望显示该值.

例如,这是我的表单类型:

class GameHasPlayerType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('inTeam', new TeamPositioningCheckboxType())
            ->add('positionX', new TeamPositioningNumberType(), array(
                'attr' => array(
                    'class' => 'in-table'
                )
            ))
            ->add('positionY', new TeamPositioningNumberType(), array(
                'attr' => array(
                    'class' => 'in-table'
                )
            ))
            ->add('exchanged', new TeamPositioningCheckboxType())
        ;
    }
}
Run Code Online (Sandbox Code Playgroud)

此类型具有自定义表单模板:

{% block team_positioning_widget %}
    {% spaceless %}
        <td>
            {{ form_widget(form.inTeam) }}
        </td>
        <td>
            {{ form.player.firstName }} {# Player is not in …
Run Code Online (Sandbox Code Playgroud)

symfony-forms twig symfony-2.4

7
推荐指数
1
解决办法
5838
查看次数

如何设置请求symfony的内容?

我手动生成表单的请求内容,并希望设置如下数据:

form[1][]=2&form[2][]=3&form[3][]=5&form[4][]=8&form[apply]=
Run Code Online (Sandbox Code Playgroud)

Symfony Request对象有一个getContent()方法,但没有setContent().

如何设置内容?

request symfony-forms symfony

7
推荐指数
2
解决办法
3512
查看次数