标签: symfony-forms

Symfony 2隐藏表单字段文本

这可能真的很愚蠢,但我试图在symfony中设置一个隐藏的表单字段值,但是当我执行一个视图源时,该值不会显示出来.this-> postID是指我通过构造函数传递的值,但这并不重要,即使我将数据值设置为它未显示的字符串.我一定是在做一些非常愚蠢的事.这是我的表格..

public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('text','text');
        $builder->add('IsshPost','hidden', array('data'=>$this->postID));
    }
Run Code Online (Sandbox Code Playgroud)

任何想法都错了吗?

symfony-forms symfony

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

Symfony2 choice_widget只打印没有标记的标签?

这是choice_widget来自Symfony2的模板.我需要在没有标记的情况下打印标签文本,即没有调用form_label模板而只是回显文本.

要设置的界限是{{ form_label(child) }}.我试过child.label但它不起作用(没有属性标签......).也试过,label但它打印整个小部件的标签,而不是当前child元素的标签.

{% block choice_widget %}
{% spaceless %}
    {% if expanded %}
        <div {{ block('widget_container_attributes') }}>
        {% for child in form %}
            {{ form_widget(child) }}
            {{ form_label(child) }} {# here! #}
        {% endfor %}
        </div>
    {% else %}
        {# print <select> element #}
    {% endif %}
{% endspaceless %}
{% endblock choice_widget %}
Run Code Online (Sandbox Code Playgroud)

forms symfony-forms symfony twig

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

将动态生成的表单嵌入到另一个表单中

我使用Symfony2.1的FormBuilder在控制器中创建一个动态表单:

$form = $this->createFormBuilder($defaultData);
$form->add('field','text');
Run Code Online (Sandbox Code Playgroud)

我想以同样的方式嵌入另一个表单并将其嵌入主表单中.

$subForm = $this->createFormBuilder();
$subForm->add('subfield','text');

// Does not work
$form->add('subform', $subForm);
Run Code Online (Sandbox Code Playgroud)

不幸的是,此设置无法正常工作.我找不到任何方法如何将动态生成的子表单添加到动态生成的表单中,如上例所示.

我错过了什么函数调用?

上面的示例代码抛出的异常是

UnexpectedTypeException:给定的类型为"string或Symfony\Component\Form\FormTypeInterface","Symfony\Component\Form\Form"的预期参数.

php forms symfony-forms symfony symfony-2.1

3
推荐指数
2
解决办法
7556
查看次数

在Symfony2.1中手动更改或捕获无效CSRF令牌的消息

我正在使用Symfony2.1.它为表单提供内置的CSRF保护.CSRF令牌无效时返回的错误消息是:" CSRF令牌无效.请尝试重新提交表单 ".

我使用经典调用在Twig模板的表单顶部显示它:

{{ form_errors(form) }}  
Run Code Online (Sandbox Code Playgroud)

如何更改返回的消息?

另一方面,更高级的可能性是捕获此错误类型,以便在我的Twig模板中显示许多选项/链接.任何的想法?

symfony-forms csrf-protection symfony-2.1

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

Symfony - 如何以"多对一"的形式保存外键

我是Symfony 2的新手,我正在尝试为具有外键的内容类型构建表单.我不知道如何使用表单保存外键.

我的两个表是"类别"和"问题".一个问题属于一个类别(多对一).所以我在Entity中的Question.php文件包含:

<?php

namespace Iel\CategorieBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Question
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Iel\CategorieBundle\Entity\QuestionRepository")
 */
class Question
{
    /**
    * @ORM\ManyToOne(targetEntity="Iel\CategorieBundle\Entity\Categorie")
    * @ORM\JoinColumn(nullable=false)
    */
    private $categorie;
    /**
    * Set categorie
    *
    @param Iel\CategorieBundle\Entity\Categorie $categorie
    */
    public function setCategorie(\Iel\CategorieBundle\Entity\Categorie $categorie)
    {
        $this->categorie = $categorie;
    }
    /**
    * Get categorie
    *
    @return Iel\CategorieBundle\Entity\Categorie
    */
    public function getCategorie()
    {
        return $this->categorie;
    }
Run Code Online (Sandbox Code Playgroud)

我试过像这样构建控制器函数,但它不是一个正确的语法:

public function addquestionAction()
{
    $question = new Question;

    $form = $this->createFormBuilder($question)
        ->add('titre', 'text')
        ->add('auteur', 'text')
        ->add('contenu', …
Run Code Online (Sandbox Code Playgroud)

formbuilder symfony-forms symfony

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

根据FormType中的另一个选项值定义表单选项允许的值

在Symfony 2.8中,在自定义表单类型中,是否可以使setAllowedValues返回依赖于另一个选项的值的结果?Options据我所知,没有明显的方法可以访问闭包中的对象。

public function configureOptions(OptionsResolver $resolver) {
    $resolver->setRequired('option1');
    $resolver->setRequired('option2');

    $resolver->setAllowedValues('option2', function ($value) {
        return $based_on_set_restricted_by_option1; // <-- option2 values are allowed or denied depending on what option1 says
    }
}
Run Code Online (Sandbox Code Playgroud)

与我所拥有的解决方案最接近的想法是拥有一个选项,该选项是封装了option1和option2并在其上执行setAllowedValues的字典,但是现在重新构造选项并不容易。

configuration options symfony-forms symfony

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

Symfony异常:$ request参数所需的值

我有一个loginAction看起来像这样:

public function loginAction(Request $request){
    if($request->getMethod() == 'POST'){
        $mail = $request->getContent('umail');
        $pass = $request->getContent('upass');
        $em = $this->getDoctrine()->getManager();
        $rep = $em->getRepository('SystemBundle:User');

        $user = $rep->findOneBy(array("email"=>$mail,"pass"=>$pass));
        if($user){
            $id = $user->getId();
            $type = $user->getType();

            return $this->render('@System/Pages/admin/index.html.twig');
        }
    }
Run Code Online (Sandbox Code Playgroud)

提交表格后,我得到以下错误:

控制器“ SystemBundle \ Controller \ SystemController :: loginAction()”要求您为“ $ request”参数提供一个值(因为没有默认值,或者因为此值之后没有非可选参数)。

以下是路由:

system_login:
path: /login
defaults: { _controller: SystemBundle:System:login}
Run Code Online (Sandbox Code Playgroud)

以及形式:

<form method="POST" id="lgn" action="{{ path('system_login') }}">
        <span class="fa fa-times close" onclick="lgn()" ></span><br />
        <span>Login:</span>
        <input type="email" placeholder="Email" required="required" name="umail" />
        <input type="password" placeholder="Password" required="required" name="upass" /> …
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony

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

无法从表单类型的查询构建器函数访问全局变量

我正在尝试在Form类型中将参数设置为查询构建器.我想将impact变量设置为表单字段查询构建器.我impact从表格选项中获得

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('title');

    $parentPage = $options["parentPage"];
    $impact = $options["impact"];

    if($parentPage != null){
        $builder->add('parent', 'entity', array(
            'class' => "CoreBundle:Page",
            'choices' => array($parentPage)
        ));
    }else{
        $builder->add('parent', 'entity', array(
            'class' => "CoreBundle:Page",
            'query_builder' => function(PageRepository $pr){
                $qb = $pr->createQueryBuilder('p');
                $qb->where("p.fullPath NOT LIKE '/deleted%'");

                $qb->andWhere('p.impact = :impact')
                    ->setParameter('impact', $impact); <-'Undefined variable $impact'

                return $qb;
            },
        ));
    }
Run Code Online (Sandbox Code Playgroud)

为什么这段代码显示错误,它说$impact是未定义的变量.是不是可以从buildForm函数中的任何位置访问的全局变量?

php query-builder symfony-forms symfony doctrine-orm

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

无法使用没有data_class的表单使用Callback断言

我正在创建一个名为IntervalType的自定义FormType.我IntervalType将有两个字段,start并且end,将是整型的.此自定义FormType将始终不使用data_class.

我想添加一个约束来保证start低于end.

如何在FormType中直接使用Symfony\Component\Validator\Constraints\Callback data_class

这是我的IntervalType,仅供参考:

// src/AppBundle/Form/Type/IntervalType.php
namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Validator\Constraints\NotBlank;

class TaskType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('start', IntegerType::class, array(
                'constraints' => array(
                    new NotBlank(),
                ),
            ))
            ->add('end', IntegerType::class, array(
                'constraints' => array(
                    new NotBlank(),
                ),
            ))
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony symfony-validator

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

如何在表单类型中获取实体管理器

在构建表单时如何获得实体管理器?

我想从数据库中搜索结果并构建choicetype的选择.我知道我可以使用entitytype,但在这种情况下,我想在数据库中记录字符串而不是对象.而且我还需要添加更多选项.

谢谢.

symfony-forms symfony-3.1

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