标签: symfony-forms

Symfony 自定义表单约束将错误写入父表单

我在 Symfony 中创建了一个自定义表单类型和约束。

约束附加到表单类型,如下所示:

->add('customField', 'customField', array(
            'required' => 
            'mapped' => false,
            'constraints' => array(new CustomField()),
        ))
Run Code Online (Sandbox Code Playgroud)

其中 CustomField 是约束类。

约束验证器的 validate() 方法如下所示:

public function validate($value, Constraint $constraint)
{
    //I know this will always fail, but it's just for illustration purposes
    $this->context->addViolation($constraint->message);
}
Run Code Online (Sandbox Code Playgroud)

我已经更改了表单的默认模板,如下所示:

{% block form_row -%}
<div class="form-group">
    {{- form_widget(form) -}}
    {{- form_errors(form) -}}
</div>
{%- endblock form_row %}

{% block customField_widget %}
{% spaceless %}
    <!-- actually different but you get the idea -->
    <input type="text" name="customField" …
Run Code Online (Sandbox Code Playgroud)

php validation symfony-forms symfony

4
推荐指数
1
解决办法
3315
查看次数

如何使用不属于路由一部分的参数来重定向ToRoute()?

我有一个带有两种...Action()方法的控制器。当我在浏览器内使用/newTask路由名称调用路由时,我有一个表单来设置-object。通过 -Button 提交后,我想重定向到具有路由名称的路由:newTaskTaskSubmit/successtask_success

\n\n
class FormController extends Controller {\n\n    /**\n     * @Route("/newTask", name="newTask")\n     */\n    public function newAction(Request $request)\n    {\n        // create a task and give it some dummy data for this example\n        $task = new Task();\n        $task->setTask(\'Write a blog post\');\n\n        $task->setDueDate(new \\DateTime(\'tomorrow\'));\n        $form = $this->createFormBuilder($task)\n            ->add(\'task\', TextType::class)\n            ->add(\'dueDate\', DateType::class)\n            ->add(\'save\', SubmitType::class, array(\'label\' => \'Create Task\'))\n            ->getForm();\n\n        $form->handleRequest($request);\n        if ($form->isSubmitted() && $form->isValid()) {\n            //Here I want to redirect...\n            return $this->redirectToRoute(\'task_success\', array(\'task\' => …
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony twig

4
推荐指数
1
解决办法
8128
查看次数

Symfony 3:提交表单后设置值

我有一个form collection并想field2在提交表单后设置,具体取决于field1. field2在表单中不可编辑,但需要。

我尝试了每个FormEvent (FormEvents::)但收到错误:

SQLSTATE[23000]:违反完整性约束:1048 列“field2”不能为空

// AppBundle/Form/MyFormType.php

// ...
$builder->addEventListener(FormEvents::POST_SUBMIT, function(FormEvent $even) {
    $data = $event->getData();
    $form = $event->getForm();

    if (isset($data['field1'])) { // isset
        $field2 = $this->container->get('repository')->find($data['field1'])->getValue(); // service works

        $data['field2'] = $field2; // !!! doesn't work !!!              
        $data->setField2($field2); // !!! doesn't work !!!    
    }
});
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?提前致谢!

php symfony-forms symfony

4
推荐指数
1
解决办法
7140
查看次数

向 Symfony3 所有 FormType 添加帮助选项

我如何向所有现有的 Symfony3 类型添加自定义“帮助”选项?

在 Symfony2 中,我是这样做的http://toni.uebernickel.info/2012/11/03/how-to-extend-form-fields-in-symfony2.1.html但现在我要升级到 Symfony3 和它不再起作用 - 它给了我“帮助”选项不存在

http://symfony.com/doc/current/form/form_customization.html#adding-help-messages可以使用,但需要将所有帮助文本移动到模板中:

{{ form_widget(form.title, {'help': 'foobar'}) }}
Run Code Online (Sandbox Code Playgroud)

...从类型类:

->add(
    'periodFrom',
    TextType::class,
    [
        'label' => 'period-from',
        'required' => false,
        'help' => 'period-from.help'
    ]
)
Run Code Online (Sandbox Code Playgroud)

我想避免这种情况。谢谢。

php symfony-forms symfony

4
推荐指数
1
解决办法
662
查看次数

自定义表单错误 symfony 4

在 Symfony 4 中,当你做类似的事情时:

<div>
    {{ form_label(form.something) }}
    {{ form_errors(form.something) }}
    {{ form_widget(form.something) }}
</div> 
Run Code Online (Sandbox Code Playgroud)

显示如下:

<div>
    <label for="form_something">Something</label>
    <ul>
        <li>This field is required</li>
        <li>Another error</li>
    </ul>
    <input type="text" id="form_something" name="form[something]" />
</div>
Run Code Online (Sandbox Code Playgroud)

我希望能够自定义错误的显示方式。

而不是这样显示:

<ul>
    <li>This field is required</li>
    <li>Another error</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我希望它是这样的:

<div class="form-control-feedback">This field is required</div>
<div class="form-control-feedback">Another error</div>
Run Code Online (Sandbox Code Playgroud)

您阅读了此页如何自定义表单渲染,但我无法理解它是如何工作的。

任何想法?谢谢。

symfony-forms symfony twig

4
推荐指数
1
解决办法
9823
查看次数

Symfony/Form:函数 DoctrineType::__construct() 的参数太少

我有一个奇怪的错误。我在自己的系统中实现了 Form 组件。在那里我创建了一个 FormType,我在其中使用 EntityType 作为字段。每次我想用 formBuilder 创建表单时,它都会抛出以下错误:

Fatal error: Uncaught ArgumentCountError: Too few arguments to function 
Symfony\Bridge\Doctrine\Form\Type\DoctrineType::__construct(), 0 passed in 
vendor/symfony/form/FormRegistry.php on line 92 and exactly 1 expected in 
vendor/symfony/doctrine-bridge/Form/Type/DoctrineType.php:102
Run Code Online (Sandbox Code Playgroud)

这里有人知道为什么会这样吗?

附加信息:

作曲家包版本:

abraham/twitteroauth          0.7.4
doctrine/annotations          v1.6.0
doctrine/cache                v1.7.1
doctrine/collections          v1.5.0
doctrine/common               v2.8.1
doctrine/dbal                 v2.6.3
doctrine/inflector            v1.3.0
doctrine/instantiator         1.1.0
doctrine/lexer                v1.0.1
doctrine/orm                  v2.6.1
monolog/monolog               1.23.0
php-curl-class/php-curl-class 8.0.1
phpmailer/phpmailer           v6.0.3
psr/cache                     1.0.1
psr/log                       1.0.2
psr/simple-cache              1.0.0
setasign/fpdf                 1.8.1
symfony/cache                 v4.0.5
symfony/console               v4.0.5
symfony/doctrine-bridge       v4.0.5
symfony/event-dispatcher      v4.0.5
symfony/filesystem            v4.0.5
symfony/form                  v4.0.5 …
Run Code Online (Sandbox Code Playgroud)

php entity doctrine symfony-forms symfony

4
推荐指数
1
解决办法
5571
查看次数

如何在 Symfony 上显示日期选择器?

我想根据 symfony 文档为我的日期类型字段设置一个日期选择器。我自从 packagist 'eternicode / bootstrap-datepicker' 以来就安装了该软件包。我可以应用我定义的条件在我的js中输入日期字段(如日期格式),但显示仍然不可能。我的 js 控制台中没有错误消息。我什至没有看到 datepikcer 组件..

\n\n

我的表格类型:

\n\n
   ->add('date_entree', DateType::class, [ \n                'widget' => 'single_text',\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0                      'html5' => false,\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0                      'attr' => ['class' => 'js-datepicker'],\n                ])\n\nMy JS:\n\n    $(document).on('ready', function() {\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0     $('.js-datepicker').datepicker({\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0      format: 'dd-mm-yyyy',\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0     });\n     });\n
Run Code Online (Sandbox Code Playgroud)\n\n

您对这个问题有什么想法吗?

\n

javascript symfony-forms symfony symfony4

4
推荐指数
1
解决办法
8148
查看次数

属性路径中给出的“字符串”、“空”类型的预期参数

实际上,当我尝试通过发送空字段来编辑表单时,会出现上述错误,

我的 UserType 类看起来像:

class UserType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('firstName', null, [
                'label' => 'Prénom'
            ])
            ->add('lastName', null, [
                'label' => 'Nom'
            ])
            ->add('email', EmailType::class, [
                'label' => 'Adresse e-mail'
            ])
            ->add('password', PasswordType::class, [
                'label' => 'Mot de passe'
            ])
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => User::class,
        ]);
    }
}
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony symfony4

4
推荐指数
1
解决办法
3114
查看次数

Symfony2:如何在Form类中获取配置参数

如果我在控制器内,我可以使用以下方法轻松读取配置参数:

$this->container->getParameter('profession');
Run Code Online (Sandbox Code Playgroud)

但是当我在其他课程中,说一个Form类型时,我怎样才能获得配置参数?

$container = new Container(); 
$container->getParameter('profession');
Run Code Online (Sandbox Code Playgroud)

上面的代码不应该也不起作用.

symfony-forms symfony

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

symfony2表单错误

The form's view data is expected to be of type scalar, array or an instance of \ArrayAccess, 
but is an instance of class Ecs\CrmBundle\Entity\Customer. 
Run Code Online (Sandbox Code Playgroud)

是我在浏览器中收到的错误..

表格代码:

<?php

namespace Ecs\CrmBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

class CustomerDefaultConfigType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name')
            ->add('customerStatus')
            ->add('tags', null, array('multiple' => true, 'property' => 'tag_name'))
        ;
    }

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

和控制器动作:

<?php

namespace Ecs\CrmBundle\Controller;

use Ecs\CrmBundle\Entity\CustomerDefaultConfig;
use Ecs\CrmBundle\Form\CustomerDefaultConfigType;
    public function newAction()
        {
            $entity = …
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony

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

标签 统计

symfony ×10

symfony-forms ×10

php ×5

symfony4 ×2

twig ×2

doctrine ×1

entity ×1

javascript ×1

validation ×1