У меня две модели в приложении Symfony. Первый – это блог:
Blog: columns: name: { type: string(20), notnull: true, unique: true } title: { type: string(255), notnull: true } description: { type: string(255), notnull: true } admin_id: { type: bigint, notnull: true } relations: User: class: sfGuardUser local: admin_id ...
Как видите, эта модель имеет отношения «один к одному» с sfGuardUser. Я хочу, чтобы регистрация этих двух состоялась в одной форме.
Поэтому я изменил класс BlogForm и использовал в нем метод embeddedRelation
. Таким образом, две формы появляются вместе. Проблема в их взгляде! Форма регистрации пользователя (которая встроена в BlogForm) кажется ребенком! Я не хочу этого … Я хочу, чтобы поля были в том же отступе.
Мой вид формы выглядит следующим образом:
Но я хочу что-то вроде этого:
Каков наилучший способ сделать это? Связано ли это с FormFormatter?
Вы проверяете sfWidgetFormSchemaFormatter
или render * ?
Я дал ответ на что-то, что почти связано здесь . И я думаю, что это почти та же проблема, что и здесь: Удаление заголовков таблиц из embedRelation ()
Я думаю, что лучший способ – вручную создать форму в шаблоне с помощью sfWidgetFormSchemaFormatter
или render *.
Редактировать:
Относительно того, что я здесь ответил, попробуйте добавить собственный форматировщик, подобный этому (в lib/widget/sfWidgetFormSchemaFormatterAc2009.class.php
):
class sfWidgetFormSchemaFormatterAc2009 extends sfWidgetFormSchemaFormatter { protected // this will remove table around the embed element $decoratorFormat = "%content%"; public function generateLabel($name, $attributes = array()) { $labelName = $this->generateLabelName($name); if (false === $labelName) { return ''; } // widget name are usually in lower case. Only embed form have the first character in upper case if (preg_match('/^[AZ]/', $name)) { // do not display label return ; } else { return $this->widgetSchema->renderContentTag('label', $labelName, $attributes); } } }
Затем добавьте его в свою форму в ProjectConfiguration
:
class ProjectConfiguration extends sfProjectConfiguration { public function setup() { // ... sfWidgetFormSchema::setDefaultFormFormatterName('ac2009'); } }
(информация поступает с веб-сайта sf )
Если это не сработает, добавьте var_dump($name);
перед if (preg_match
и добавьте вывод к вашему вопросу.