EOF; $t->is($child['name']->renderError(), fix_linebreaks($output), '->renderRow() renders errors as HTML when the widget has a parent'); try { $parent->renderError(); $t->fail('->renderError() throws an LogicException if the form field has no parent'); } catch (LogicException $e) { $t->pass('->renderError() throws an LogicException if the form field has no parent'); } // global errors $authorErrorSchema = new sfValidatorErrorSchema(new sfValidatorString()); $authorErrorSchema->addError(new sfValidatorError(new sfValidatorString(), 'name error'), 'name'); $authorErrorSchema->addError(new sfValidatorError(new sfValidatorString(), 'non existent field error'), 'non_existent_field'); $authorErrorSchema->addError(new sfValidatorError(new sfValidatorString(), 'hidden field error'), 'id'); $articleErrorSchema = new sfValidatorErrorSchema(new sfValidatorString()); $articleErrorSchema->addError($titleError = new sfValidatorError(new sfValidatorString(), 'title error'), 'title'); $articleErrorSchema->addError($authorErrorSchema, 'author'); $parent = new sfFormFieldSchema($schema, null, 'article', array('title' => 'symfony', 'author' => array('name' => 'Fabien')), $articleErrorSchema); $child = $parent['author']; $output = <<<EOF <ul class="error_list"> <li>non existent field error</li> <li>Id: hidden field error</li> </ul> EOF; $t->is($child->renderError(), fix_linebreaks($output), '->renderError() renders global errors as expected (global errors, hidden field errors, non existent field errors)'); // id format $schema->setIdFormat('%s_id_format_test'); $parent = new sfFormFieldSchema($schema, null, 'article', array('title' => 'symfony', 'author' => array('name' => 'Fabien')), $articleErrorSchema); $t->like($parent['author']->render(), '/_id_format_test/', '->render() uses the parent id format');
$t->is($w->getGlobalErrors($errors), array('global error', 'error for w4', 'W2' => 'error for w2'), '->getGlobalErrors() returns an array of global errors, errors for hidden fields, and errors for non existent fields'); // ->render() $t->diag('->render()'); $w = new sfWidgetFormSchema(); try { $w->render(null, 'string'); $t->fail('->render() throws an InvalidArgumentException if the second argument is not an array'); } catch (InvalidArgumentException $e) { $t->pass('->render() throws an InvalidArgumentException if the second argument is not an array'); } $w['first_name'] = $w1; $w['last_name'] = $w2; $w['id'] = new sfWidgetFormInputHidden(); $w->setAttribute('style', 'padding: 5px'); $w->setNameFormat('article[%s]'); $w->setIdFormat('id_%s'); $expected = <<<EOF <tr><td colspan="2"> <ul class="error_list"> <li>Global error message</li> <li>Id: Required</li> </ul> </td></tr> <tr> <th><label style="padding: 5px" for="id_article_first_name">First name</label></th> <td> <ul class="error_list"> <li>Too short</li> </ul> <input class="foo" type="text" name="article[first_name]" value="Fabien" id="id_article_first_name" /></td> </tr> <tr>