2017-04-23 2 views
0

Ich habe eine Roster-Entität in meinem Symfony-Projekt, die zwei Datetime-Felder enthält.Symfony Unit Test Formular, Formular mit jquery Datepicker

Das Eingabefeld für FormType verwendet zwei single_text-Felder, eines für das Datum für die Zeit.

$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", 
      ) 

Kann mir jemand sagen, wie ich das Datum formatiere, das ich in diesem Feld in meinem Unit Test übergebe.

Der nächste ich bekommen habe, ist

 $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, 
    )); 

Es ist mit diesem Fehler Fehler

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

Antwort

1

Können Sie versuchen, diese stattdessen:

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

Es klingt (ab Fehlermeldung) wie das Rendern als auswählbare Dropdown-Listen anstelle eines Eingabetextfeldes.

+0

Vielen Dank - leider, dass Unreachable Feld [Jahr] –

+0

zurückgibt Also ich versuche wirklich zu helfen, aber was wird tatsächlich gerendert? Können Sie in einem Browser einchecken und dann mit der rechten Maustaste auf das Feld rosterStartTime klicken und sehen, wie der "Name" angezeigt wird? Ich nehme an, der Name ist zum Beispiel 'appbundle_roster [rosterStartTime] [Jahr]'. Das könnte Ihnen helfen, herauszufinden, was Sie verwenden sollen. –

+0

Scheint ein Datum und Zeit in zwei getrennten Teilen