标签: symfony-forms

验证限制不会触发注册表单

我有一个Doctrine用户实体,我试图为注册表单添加表单验证器,但他们不会在任何条件下触发注册表单.

我的用户实体:

namespace JMSHockey\AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
 * My\AppBundle\Entity\User
 *
 * @ORM\Table(name="user")
 * @ORM\Entity(repositoryClass="My\AppBundle\Entity\UserRepository")
 * @UniqueEntity(fields={"email"}, message="Sorry, this email address is already in use.", groups={"registration"})
 * @UniqueEntity(fields={"username"}, message="Sorry, this username is already taken.", groups={"registration"})
 */
class User implements AdvancedUserInterface,\Serializable
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string $email
     *
     * @ORM\Column(name="email", type="string", length=75, nullable=false)
     * @Assert\Email() …
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony doctrine-orm symfony-2.1

5
推荐指数
1
解决办法
830
查看次数

我的变压器不起作用(从模型数据到表格数据)

我正在构建一个silex应用程序(源代码在这里)
App\Form\DataTransformer我有一个MetadataTransformer类.
但该transform方法不起作用(反向转换).
它适用于a App\Form\Metadata AbstractType,它是一个集合的一部分App\Form\ArticleForm AbstractType.
最后一个表单是在我的编辑方法中调用的App\Controller\Admin\ArticleAdminController

数据转换器应该映射这样的数据

{"key":"value"}
Run Code Online (Sandbox Code Playgroud)

进入"表格数据",如:

[{"name":"key","value":"key"}] 
Run Code Online (Sandbox Code Playgroud)

因此它可以显示为集合.

Metadata.php

class MetaData extends AbstractType
{
    protected $span4 = "span4";
    protected $span3 = "span3";

    public function buildForm(FormBuilderInterface $builder,array $options)
    {
        $builder
            ->add('name', 'text', array(
                "label" => ' ',
                "attr"  => array(
                    "class"       => $this->span3,
                    "placeholder" => "name"
                )
            ))
            ->add('value', 'text', array(
                'label' => ' ',
                'attr'  => array(
                    "class"       => $this->span4,
                    'placeholder' => 'value'
                )
            )) …
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony silex

5
推荐指数
1
解决办法
4120
查看次数

在Symfony2中对复选框进行分组

似乎Symfony2 Form组件不处理这种常见情况.以下是在html中想要的内容

在此输入图像描述

代码如下:

        ->add('code', 'choice', array(
            'choices' => array(
                'Food'  => array('pizza', 'burger', 'icecream'),
                'Music' => array('poney', 'little', 'pocket'),
            ),
            'multiple' => true,
            'expanded' => true,
            'required' => true
        ));
Run Code Online (Sandbox Code Playgroud)

这实际上给出了错误的输出:

在此输入图像描述

这很奇怪,因为案件expanded => false处理得当

在此输入图像描述

请问如何处理这个案子?

symfony-forms symfony

5
推荐指数
1
解决办法
4028
查看次数

Symfony2表单给出了关于FormView的可捕获错误

这真的很奇怪,它发生在更新Twig模板后:

控制器部分

    $registration = new Registration();
    $form = $this->createForm(new RegistrationType(), $registration, array(
        'action' => $this->generateUrl('account_create'),
    ));

    return $this->render(
        'AcmeCommonBundle:Security:register.html.twig',
        array(
            'form' => $form->createView(),
            'contentBackColor' => 'canvasGreen'
            )
    );
Run Code Online (Sandbox Code Playgroud)

模板部分

{{ form_start(form) }}
    {{ form_errors(form) }}

    <p>All Fields Are Required</p>

    <div class="form-row">
        {{ form_label(form.firstname, "First Name") }}
        {{ form_widget(form.firstname) }}
        <div class="clear-fix"></div>
    </div>
    <div class="form-errors-row">
        {{ form_errors(form.firstname) }}
    </div>

    <div class="form-row">
        {{ form_label(form.lastname, "Last Name") }}
        {{ form_widget(form.lastname) }}
        <div class="clear-fix"></div>
    </div>
    <div class="form-errors-row">
        {{ form_errors(form.lastname) }}
    </div>

    <div class="form-row">
        {{ …
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony twig

5
推荐指数
1
解决办法
5094
查看次数

在普通表单类上使用奏鸣曲字段类型

我正在尝试在首页上插入自定义奏鸣曲表单字段类型,而不是在 SonataAdmin 中,如下所示:

 $form = $this->createFormBuilder($content)
            ->add('titleEs', 'text', array('required' => true, 'label' => 'label.title.spanish', 'attr' => array('class' => 'col-xs-12 form-control input-lg')))
            ->add('contentEs', 'ckeditor', array('required' => true,'label' => 'label.content.spanish', 'attr' => array('class' => 'col-xs-12')))
            ->add('titleEn', 'text', array('required' => true,'label' => 'label.title.english', 'attr' => array('class' => 'col-xs-12 form-control input-lg')))
            ->add('contentEn', 'ckeditor', array('required' => true, 'label' => 'label.content.english', 'attr' => array('class' => 'col-xs-12')))
            ->add('header', 'sonata_type_model', array('required' => true,'label' => 'label.content.headerImage'), array('link_parameters' => array('context' => 'content/front', 'size' => 'big')))
            //->add('coverImage', 'sonata_type_model_list', array('required' => true,'label' …
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony form-fields sonata-admin sonata

5
推荐指数
1
解决办法
1755
查看次数

Symfony 2.8/3.0升级:如何处理带有可变参数的表单类型?

假设我将自定义表单类型创建为服务,如Symfony文档中所述.但我想要2个"性别"自定义类型,有2个不同的输入参数,我在Symfony 2.7中这样做:

# app/config/config.yml
parameters:
    genders1:
        m: Male
        f: Female
    genders2: # This makes no sense at all, but it is for the example purpose!
        h: Horse
        t: Turtle
Run Code Online (Sandbox Code Playgroud)

然后,我宣布了两个这样的服务:

<!-- src/AppBundle/Resources/config/services.xml -->
<service id="app.form.type.gender1" class="AppBundle\Form\Type\GenderType">
    <argument>%genders1%</argument>
    <tag name="form.type" alias="gender1" />
</service>

<service id="app.form.type.gender2" class="AppBundle\Form\Type\GenderType">
    <argument>%genders2%</argument>
    <tag name="form.type" alias="gender2" />
</service>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我使用相同的 GenderType类来处理2种自定义表单类型(使用gender1gender2别名),我可以这样使用:

$builder
    ->add('field1', 'gender1')
    ->add('field2', 'gender2');
Run Code Online (Sandbox Code Playgroud)

这允许我在一个GenderType具有不同输入参数的类()中添加一些公共逻辑(在这个例子中我有比2更多的可能性).

但是从Symfony 2.8开始,不推荐使用服务别名添加字段.类名必须作为第二个参数传递,如下所示:

$builder->add('field1', GenderType::class)
Run Code Online (Sandbox Code Playgroud)

那么如何才能区分我的2个服务(每个服务都没有相同的输入参数)?

创建Gender1TypeGender2Type扩展抽象GenderType …

symfony-forms symfony symfony-2.8

5
推荐指数
1
解决办法
908
查看次数

Bootstrap 3无法在Symfony3中运行

我刚刚开始学习Symfony3,我正在尝试使用bootstrap3来构建我的表单.根据文档,bootstrap_3_layout.html.twig内置并可以通过更改Twig设置全局激活config.yml:

# Twig Configuration
twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"
    form_themes: 
        - "bootstrap_3_layout.html.twig"
Run Code Online (Sandbox Code Playgroud)

当我重新加载页面时,页面加载没有CSS,twig文件和页面源如下:

{# app/Resources/views/experiment/new.html.twig #}

{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}


<form name="form" method="post">
<div id="form"><div class="form-group"><label class="control-label required" for="form_title">Title</label><input type="text" id="form_title" name="form[title]" required="required" class="form-control" /></div><div class="form-group"><button type="submit" id="form_save" name="form[save]" class="btn-default btn">Create Task</button></div><input type="hidden" id="form__token" name="form[_token]" class="form-control" value="O7tN2AUjyLByEz2tkNf675jqixxjev0p4ivzs5Bn4VA" /></div>
</form>
Run Code Online (Sandbox Code Playgroud)

这表明bootstrap3类已正确注入.该网站本身如下:

在此输入图像描述

我错过了哪些步骤让CSS正常工作?

css php symfony-forms symfony twitter-bootstrap-3

5
推荐指数
1
解决办法
5608
查看次数

Symfony EasyAdmin捆绑包如何过滤选择选项

我使用的是symfony 3 + EasyAdmin捆绑软件,在某些实体中,我有一个字段“ Sectors”,该字段创建与另一个实体“ Sector”的关系。

EasyAdmin会自动为我提供用户可以选择的所有部门的选择。

我需要用户(与一个或多个扇区相关联)只能修改(添加或删除关系),只要该关系在其扇区中(换句话说,如果我是用户并且我与扇区相关联) A和B,如果我发布(或编辑)新闻,则只能将新闻部门设置(添加/删除)到A和/或B)...

我该如何实现?

如我所见,该表单由symfony标准表单组件处理。

php symfony-forms symfony doctrine-orm symfony2-easyadmin

5
推荐指数
0
解决办法
1856
查看次数

从Symfony表单发送选择值代替选择键

我需要从Symfony发送表单ChoiceType :: class

但是我不需要选择键,我需要发送选择值。

那有可能吗?

 $form->add('section', ChoiceType::class, array(
                'mapped' => false,
                'choices' => array(
                    1 => 'value1',
                    2 => 'value2'

                ),
          ));
Run Code Online (Sandbox Code Playgroud)

如果我选择value1,我只想发送value1

不是默认的键1

symfony-forms symfony

5
推荐指数
2
解决办法
6808
查看次数

使用参数修改symfony表单的url

我想使用参数修改提交的symfony表单的url。从该平台尝试了许多解决方案,但没有解决方案有帮助!

当前网址如下:http://localhost:8000/search?app_bundle_search_form%5Bsearch%5D=qui&app_bundle_search_form%5Bbrand%5D=&app_bundle_search_form%5Bprice%5D=500%2C100000&app_bundle_search_form%5B_token%5D=BtA5bZb9HErUXzXFzGFbpEhlD6nD33zr7tKiPLxjpy4

我想要它像http:// localhost:8000 / search?search = qui?brand =?minprice = 500?maxprice = 100000

这是我的控制器:

 public function searchAction($searchTerm=null,Request $request)
{
    if ($request->getMethod() == 'GET') {

        $searchTerm = $request->query->get('app_bundle_search_form')['search'];
        $searchBrand = $request->query->get('app_bundle_search_form')['brand'];
        $price = $request->query->get('app_bundle_search_form')['price'];
        $price = explode(",", $price);

        $minPrice = $price[0];
        $maxPrice = $price[1];

        $em = $this->getDoctrine()->getManager();
        $search = $em->getRepository('AppBundle:Classified')->searchClassifieds($searchTerm, $searchBrand, $minPrice, $maxPrice);


    }


    return $this->render('search-result.html.twig', [
        'searchTerm' => $searchTerm,
        'results' => $search
    ]);


}
Run Code Online (Sandbox Code Playgroud)

形成:

 public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->setMethod('GET')
        ->add('search', TextType::class,array(
            'required'=> false …
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony

5
推荐指数
1
解决办法
544
查看次数