【问题标题】:Symfony unit testing form, form using jquery datepickerSymfony 单元测试表格,表格使用 jquery datepicker
【发布时间】:2023-03-18 15:48:01
【问题描述】:

我的 Symfony 项目中有一个名册实体,其中包含两个日期时间字段。

FormType 上的输入字段使用两个 single_text 框,一个用于日期,一个用于时间。

 $builder->add('serviceUserId', EntityType::class, array('class' => 'AppBundle:ServiceUser',
            'data' => $options['serviceUser']))
            ->add('rosterStartTime', DateTimeType::class,
                array('date_widget' => "single_text",
                    'time_widget' => "single_text",
                ))
            ->add('rosterEndTime', DateTimeType::class, array('date_widget' => "single_text",
                'time_widget' => "single_text",
            )

谁能告诉我如何格式化我在单元测试中传递给该字段的日期。

我得到的最近的是

      $client = static::createClient(array(), array(
        'PHP_AUTH_USER' => 'username',
        'PHP_AUTH_PW' => 'password',
    ));

    $date = new \DateTime('2015-04-01 08:00');

    //browse to an exsting service user and add a roster to that record
    $crawler = $client->request('GET', '/serviceuser/2');
    $crawler = $client->click($crawler->selectLink('Add New Roster')->link());

    // Fill in the form and submit it
    $form = $crawler->selectButton('Create')->form(array(
        'appbundle_roster[serviceUserId]' => 2,
        'appbundle_roster[rosterStartTime]'  => $date->format('yyyy-MM-dd'),

        'appbundle_roster[rosterStatus ]' => 1,
        'appbundle_roster[numberResourcesNeeded]' => 2,
        'appbundle_roster[customerId]' => 2,
    ));

因为这个错误而失败

     AppBundle\Tests\Controller\RosterControllerTest::testCompleteScenario
     InvalidArgumentException: Cannot set value on a compound field "appbundle_roster[rosterStartTime]".

【问题讨论】:

    标签: php symfony unit-testing phpunit


    【解决方案1】:

    你可以试试这个吗:

    'appbundle_roster[rosterStartTime][year]' => 2015,
    'appbundle_roster[rosterStartTime][month]' => 4,
    'appbundle_roster[rosterStartTime][day]' => 1,
    

    听起来(来自错误消息)就像它呈现为可选择的下拉列表而不是输入文本字段。

    【讨论】:

    • 非常感谢 - 不幸的是返回 Unreachable field [year]
    • 所以我真的很想帮忙,但实际呈现的是什么?您可以在浏览器中检查,然后右键单击 rosterStartTime 字段并查看“名称”显示的内容吗?我假设名称是例如appbundle_roster[rosterStartTime][year]。这可能会帮助您弄清楚要使用什么。
    • 似乎是两个独立部分的日期和时间
    • 感谢 @Alvin 这工作 'appbundle_roster[rosterStartTime][date]'=>'2017-04-01', 'appbundle_roster[rosterStartTime][time]'=>'08:00', ' appbundle_roster[rosterEndTime][date]'=>'2017-04-01', 'appbundle_roster[rosterEndTime][time]'=>'09:00'));
    • 我只是想提出类似的建议!很高兴你成功了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 2022-06-28
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多