Ошибка при отправке форм Symfony - PullRequest
0 голосов
/ 11 декабря 2011

Это относится к этому вопросу .У меня есть форма MakenewForm.php.Мое действие:

class posterActions extends autoPosterActions
{
  public function executeMakenew(sfWebRequest $request)
  {
    $this->form = new MakenewPosterForm();

    if($request->isMethod(sfRequest::POST))
    {
      $this->form->bind($request->getParameter($this->form->getName()));      
    }        

    $this->poster= $this->form->getObject();
  }

}

в моем шаблоне:

 <div id="sf_admin_content">
    <?php include_partial('poster/form', array('poster' => $poster, 'form' => $form, 'configuration' => $configuration, 'helper' => $helper, 'makenew'=>true)) ?>
  </div>

Я использую администратор-генератор.и я переопределил _form.php, просто изменил действие отправки на /poster/makenew, то есть тот же контроллер.

Мой MakenewForm.php имеет виджет Textarea.

Теперь я открываю /poster/makenew и отправляю его со значением текстовой области \r\n\r\n Line1\r\nLine2\r\n\r\nLine4

Форма подчиняется тому же действию, поэтому я вижу ту же страницу, но не значение текстовой областиобрезается на одну строку сверху, т. е. \r\n Line1\r\nLine2\r\n\r\nLine4

Где именно проблема?Я предполагаю $form->bind(), но они говорят, что symfony был строго проверен, так что это может быть и моя вина.

Моя форма:

<?php

class MakenewPosterForm extends PosterForm
{


  public static $choices= array('BRCA'=>"BRCA", 'BSA'=>'BSA');

  public function configure()
  {

  $keys= (array_keys(self::$choices));
  $default = $keys[0];


    unset($this['id'], $this['created_at'], $this['updated_at'], $this['slug'],$this['approved'], $this['filename']);

    $this->widgetSchema['preset']= new sfWidgetFormChoice(array('default'=>'BRCA','choices'=>self::$choices));
    $this->validatorSchema['preset']=new sfValidatorChoice(array('choices'=>array_keys(self::$choices)));
    $this->widgetSchema['text']= new sfWidgetFormTextarea();
    $this->validatorSchema['text']= new sfValidatorString(array('required'=>false));

    $this->widgetSchema->setHelp('name','Enter some keywords to describe your poster.');
  $this->widgetSchema['places_list']->setOption('expanded', true);
  $this->widgetSchema['user_id'] = new sfWidgetFormInputHidden(array(), array("value"=>"anonymous")); 

  $this->validatorSchema['user_id']=new sfValidatorString(array("required"=>false));
  $this->widgetSchema['user_id']->setOption('is_hidden',true);

  $this->setDefault('name',$default);  
  $this->setDefault('preset',$default);  

  $this->widgetSchema->setNameFormat('makenewposter[%s]');

  }
}

и мой шаблон makenewSuccess.php:

<?php use_helper('I18N', 'Date') ?>
<?php include_partial('poster/assets') ?>

<div id="sf_admin_container">
  <h1><?php echo __('New Poster', array(), 'messages') ?></h1>

  <?php include_partial('poster/flashes') ?>

  <div id="sf_admin_header">
    <?php include_partial('poster/form_header', array('poster' => $poster, 'form' => $form, 'configuration' => $configuration)) ?>
  </div>


  <div id="sf_admin_bar">
    <?php 
    $args=array('preset'=>
        ($form->getValue('preset'))? $form->getValue('preset'): $form->getDefault('preset'),
        'text'=>
        ($form->getValue('text'))? $form->getValue('text'): $form->getDefault('text')
        )



    ?>
    <img src="<?php echo url_for('@poster_preview').'?'.http_build_query($args); ?>" width= <?php echo sfConfig::get('poster_preview_width',800)?>/>






  </div>


  <div id="sf_admin_content">
    <?php include_partial('poster/form', array('poster' => $poster, 'form' => $form, 'configuration' => $configuration, 'helper' => $helper, 'makenew'=>true)) ?>
  </div>

  <div id="sf_admin_footer">
    <?php include_partial('poster/form_footer', array('poster' => $poster, 'form' => $form, 'configuration' => $configuration)) ?>
  </div>
</div>

_form во многом совпадают с шаблоном по умолчанию.Я все равно выкладываю.

<?php use_stylesheets_for_form($form) ?>
<?php use_javascripts_for_form($form) ?>

<div class="sf_admin_form">
  <?php echo $form->renderFormTag( url_for('@poster'.(isset($makenew)?'_makenew':'_create')), array('method' => 'POST') ); ?>
    <?php echo $form->renderHiddenFields(false) ?>

    <?php if ($form->hasGlobalErrors()): ?>
      <?php echo $form->renderGlobalErrors() ?>
    <?php endif; ?>

    <?php foreach ($configuration->getFormFields($form, $form->isNew() ? 'new' : 'edit') as $fieldset => $fields): ?>
      <?php include_partial('poster/form_fieldset', array('poster' => $poster, 'form' => $form, 'fields' => $fields, 'fieldset' => $fieldset)) ?>
    <?php endforeach; ?><?php include_partial('poster/form_actions', array('poster' => $poster, 'form' => $form, 'configuration' => $configuration, 'helper' => $helper)) ?></form></div>
...