Неустановленные поля генератора администратора Symfony 1.4

Я использовал задачу «doctrine: generate-admin». Все работает, но я хочу использовать файл generate.yml, чтобы сбросить некоторые поля формы, а не сбрасывать их в самом классе Form. Такие вещи, как «updated_at», мне нужно сохранять только при обновлении объекта, но я не хочу, чтобы они отображались в каких-либо формах, и поэтому я не получаю никаких ошибок проверки формы.

Это возможно? Я не могу найти ничего на справочной странице генератора, что позволило бы мне это сделать, кажется, что конфигурация полей позволяет только изменить метку/учетные данные и т. д.


person joe1    schedule 12.01.2011    source источник


Ответы (3)


Вам нужно просто выбрать поля, которые вы хотите отобразить:

config:
  form:
    display:
      Content: [title, body, author]
      Admin:   [is_published, expires_at]

Странно, что вы не нашли его на справочной странице. Вот: http://www.symfony-project.org/reference/1_4/en/06-Admin-Generator (перейдите к форме -> дисплей).

Редактировать:

Генератор администратора использует метод sfModelGeneratorConfiguration::getFormFields() для получения списка полей для отображения. Он принимает все поля только в том случае, если вы не укажете опцию «отображать».

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

person Jakub Zalas    schedule 12.01.2011

попробуй это:

config:
  list:
    hide: [created_at, updated_at]

http://www.symfony-project.org/reference/1_4/en/06-Admin-Generator#chapter_06_sub_hide

person martin    schedule 12.01.2011

Помимо скрытия полей в config/generator.yml административного модуля, как указано выше, вы должны отключить их в соответствующей форме. Поэтому, если вы хотите скрыть поля created_at и updated_at модели Timestampable, измените метод configure() в lib/form/doctrine/ModelForm.class.php на

public function configure()
{
    unset($this['created_at'],$this['updated_at']);
}
person Webler    schedule 04.10.2012
comment
$this не является массивом в контексте объекта. - person Edson Medina; 05.10.2012
comment
Мы можем найти ссылки на $this как на массив во всех документах Symfony 1.x, особенно в отношении форм. - person Webler; 14.12.2012
comment
Я получаю фатальную ошибку PHP: невозможно использовать объект типа xxx в качестве массива при попытке использовать $this в качестве массива. Не могли бы вы поделиться кодом, который работает? - person Edson Medina; 15.12.2012
comment
Ссылка, которую вы мне прислали, показывает, что $this используется как объект (и имеет свойства массива). - person Edson Medina; 17.01.2013
comment
Это $this-›независимо['xxx'], а не $this['независимо']['xxx'] - person Edson Medina; 17.01.2013
comment
Если бы вы просто выполнили его, вы бы увидели, что unset($obj['two']) будет работать так же хорошо, как unset($this['created_at']) в классах форм Symfony. Меня не волнует, если это не верно для каждого объекта в PHP, это для форм Symfony, и именно так это стало возможным. - person Webler; 17.01.2013
comment
Выдает фатальную ошибку. И класс Symfony, о котором вы говорите, не использует его таким образом (code.google.com/p/symfonycrm/source/browse/trunk/lib/form/) - person Edson Medina; 17.01.2013
comment
Это становится отдельной темой. ModelForm в конечном счете реализует ArrayAccess — интерфейс, о котором я пытался рассказать, который позволяет объектам вести себя как массивы. Вот еще одна попытка показать это - person Webler; 17.01.2013
comment
Веблер, вы абсолютно правы. Я не знал, что это возможно. Прости. - person Edson Medina; 18.01.2013