1

我在 Symfony 4.4 中创建了一个表单,其TimeType字段定义如下:

$builder
    ->add('planned_start', TimeType::class, [
        'widget' => 'single_text',
        'empty_data' => '',
        'constraints' => [
            new NotBlank([
                'message' => 'worksheet.worker.planned_start.required_error'
            ])
        ]
    ])

我的控制器的功能测试工作完美,如果没有给出有效的,则返回定义的错误。

但是,当我直接测试表单时,我得到以下异常,就像我不能对 TimeType 字段施加任何约束一样

Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException: An error has occurred resolving the options of the form "Symfony\Component\Form\Extension\Core\Type\TimeType": The option "constraints" does not exist. Defined options are: "action", 
"allow_file_upload", "attr", "attr_translation_parameters", "auto_initialize", "block_name", "block_prefix", "by_reference", "choice_translation_domain", "compound", "data", "data_class", "disabled", "empty_data", "error_bubbling", "help", 
"help_attr", "help_html", "help_translation_parameters", "hours", "html5", "inherit_data", "input", "input_format", "label", "label_attr", "label_format", "label_translation_parameters", "mapped", "method", "minutes", "model_timezone", "placeholder", 
"post_max_size_message", "property_path", "reference_date", "required", "row_attr", "seconds", "translation_domain", "trim", "upload_max_size_message", "view_timezone", "widget", "with_minutes", "with_seconds".

/var/www/vendor/symfony/form/ResolvedFormType.php:99
/var/www/vendor/symfony/form/FormFactory.php:76
/var/www/vendor/symfony/form/FormBuilder.php:94
/var/www/vendor/symfony/form/FormBuilder.php:244
/var/www/vendor/symfony/form/FormBuilder.php:195
/var/www/vendor/symfony/form/FormFactory.php:30
/var/www/tests/Form/WorksheetWorkerFormTypeTest.php:39

这是我测试表格的方法:

<?php

namespace App\Tests\Form\Type;

use App\Form\Type\TestedType;
use App\Form\WorksheetWorkerFormType;
use Doctrine\Persistence\ObjectManager;
use Symfony\Component\Form\PreloadedExtension;
use Symfony\Component\Form\Test\TypeTestCase;
// ...

class WorksheetWorkerFormTypeTest extends TypeTestCase
{
    private $objectManager;

    protected function setUp()
    {
        // mock any dependencies
        $this->objectManager = $this->createMock(ObjectManager::class);

        parent::setUp();
    }

    protected function getExtensions()
    {
        // create a type instance with the mocked dependencies
        $type = new WorksheetWorkerFormType($this->objectManager);

        return [
            // register the type instances with the PreloadedExtension
            new PreloadedExtension([$type], []),
        ];
    }

    public function testMinimal()
    {
        $form = $this->factory->create(WorksheetWorkerFormType::class);

        $form->submit([
            'planned_start' => '08:00',
            'planned_end' => '16:00'
        ]);

        $this->assertTrue($form->isValid());
    }
}

任何想法 ?

谢谢

4

0 回答 0