Symfony 1.4 Пользовательская форма - PullRequest
0 голосов
/ 05 января 2012

Как раз тогда, когда я думаю, что у меня сломан этот фреймворк ... что-то, что, как кажется, должно быть настолько простым, мешает моей ЖИЗНИ!

Вот что я получил:

PageMeta:
  connection: doctrine
  actAs: { Timestampable: ~ }
  tableName: page_meta
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    site_id:
      type: integer(4)
      notnull: true
    meta_type_id:
      type: integer(4)
      notnull: true
    page_name_id:
      type: integer(4)
      notnull: true
    value:
      type: string(65535)
      default: ''
      notnull: true

Реляционные идентификаторы во всех случаях просто id | таблицы имен и не важны. Я наполняю их просто отлично, вот что мне нужно.

Я хочу создать форму со встроенной формой для каждого имени страницы (в настоящее время их 9). Поэтому я создал пользовательскую форму

class MagicForm extends BaseForm
{
  public function configure()
  {
    CODE TO GET ALL MY NEEDED VARIABLE and MODELS
    $forms = new sfForm();
       $x = 0;

       if(count($pageMetas) < 1)
       {
         foreach($pages as $page)
         {
           $pageMeta = new PageMeta();
           $pageMeta->PageName = $page;
           $pageMeta->setMetaTypeId(1);
           $pageMeta->setSiteId($sid);
           $pageMetas[] = $pageMeta;
         }
       }

       foreach($pageMetas as $meta)
       {
         $metaForm = new PageMetaForm($meta);
         $metaForm->widgetSchema['value']->setLabel($meta->PageName->getName());
         $metaForm->setDefault('value', $meta->getValue());
         $metaForm->widgetSchema['page_name_id'] = new sfWidgetFormInputHidden();
         $forms->embedForm($x,$metaForm);
         $x++;
       }

       $this->embedForm('TitleTags',$forms);
     }
  }

это работает просто отлично, я загружаю свою форму и получаю нужные 9 форм с полем Значение, готовым для заполнения.

Здесь моя проблема, я не могу их спасти! Я пытался обработать их путем связывания формы и сохранения, я получаю ошибки crsf_token и другие.

Я пытался просто захватить значения записей и создать новую модель PageMeta и просто сохранить ее.

i.e.
  $pageMeta = new PageMeta();
  $pageMeta->setXXX($request->getPostParamater(XXX);
  etc;

но после первоначального сохранения я получаю дубликаты. И да, я передаю Id, и да, я даже пытался сделать все $ PageMeta-> setNew (ложь); Когда это не новое значение, это дает мне ошибку: Неизвестное свойство записи / связанный компонент "new" на "PageMeta" однако я могу подтвердить, что PageMeta действительно является объектом PageMeta ....

В любом случае, в конце я хочу иметь несколько (НЕ ДИНАМИЧНЫХ, я точно знаю, сколько мне нужно) одной и той же формы на одной странице, а затем сохранить их все сразу.

Спасибо, что читаете ... сейчас ... GO!

1 Ответ

1 голос
/ 05 января 2012

Формы не так хороши в Symfony. Мне кажется, что проблема crsf_token идет с именем oder id в шаблоне.

например. в вашей lib / form / (/ ? pagemeta.php /) => $ this-> wigetSchema .... важно !!!

public function configure() {
    $this->setWidgets(array(
        'firstname' => new sfWidgetFormInputText(array(), array('size' => '40', maxlength' => '100')),
 ));

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

в шаблоне Success.php:

<?php include_partial('global/standardform',array('form' => $formPageMeta, 'formTarget' => $formTargetPageMeta)) ?>

и в вашем action.calls

$this->formPageMeta = new PageMetaForm(array(
                'firstname' => $this->endkunde->getFirstname(),
));

$this->formTargetPageMeta = 'test/index'; //module/action


    if ($request->isMethod('post')) {
        $this->formPageMeta->bind($request->getParameter('pagemeta')); //getParameter is from the action module/action

        if ($this->formPageMeta->isValid()) {
            $formData = $this->formPageMeta->getValues();
            $metaForm->widgetSchema['value']->setLabel($meta->PageName->getName());
        }
    }

Но я тоже ненавижу формы, но я думаю, что это проблема, из-за которой вы не установили виджетSchema. Надеюсь, я не ошибся!

Craphunter

...