Symfony 1.4: как различить две формы в одном модуле - PullRequest
0 голосов
/ 12 декабря 2011
  • У меня есть один модуль: «Работа»

  • В работе, у меня есть две частичные: _partialA _partialB

Обе части используют один и тот же JobForm.Class.php

Вот вопрос / чего я пытаюсь достичь:

в JobForm.Class.php:

function removeFields()
{
if ($partialName == 'partialA'){
unset ($this['field_a']);
}
if($partialName == 'partialB'){
unset ($this['field_b']);
}
}

Очевидно, у меня возникли проблемы с определением "$ absoluteName"

Помощь? Предложения? Есть ли другой / лучший способ добиться того же желаемого результата?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

Я на самом деле использовал решение, предложенное Андреу Хейнекеном (кстати, обожаю пиво), но спасибо, Дэн, за ваше решение.Я просто создал новый Formclass и расширил необходимый базовый модуль.

Вот ссылка для деталей: Решение вопроса

0 голосов
/ 13 декабря 2011

Во-первых, я бы не стал учить форму вашим частичным именам, потому что она не должна быть привязана к вашему слою вида.Вместо этого найдите семантическое имя для настройки, которую вы пытаетесь достичь (возможно, «withExtraFields» или около того, я просто догадываюсь).

При этом, как минимум, есть 3 способа сделать то, что вы 'повторная попытка:

Вы можете либо передать ее в виде опции в форму:

$form = new JobForm($job, array('withExtraFields' => true));

, а затем воздействовать на нее внутри формы:

if($this->getOption('withExtraFields') //do something

Или выможет вызвать сбой в контроллере (вероятно, не самое лучшее место):

//actions.class.php
if($partialName == 'partialA') unset($form['field_a']);

Или, как предложено выше, вы можете создать 2 разные формы (лучше всего, если применяются несколько полей или другие правила проверки):

//actions.class.php
if($partialName == 'partialA') $form = SpecialJobForm();
else $form = NotSoSpecialJobForm();

Надеюсь, это поможет.Daniel

...