Изменить формы по умолчанию в Symfony - PullRequest
0 голосов
/ 10 декабря 2011

Я хотел бы использовать формы, сгенерированные propel

(propel: generate-module --with-show --non-verbose-templates интерфейсные пользователи)

но я бы хотел немного их изменить. e.q. Я хотел бы удалить поля, которые являются внешними ключами. Возможно ли это, или я должен создавать свои собственные формы?

EDIT

в файле: имя_проекта / lib / form / form_file.class.php есть пустой класс, производный от некоторого базового класса. Если положить что-то вроде этого:

$this->setWidgets(array(
      'name'    => new sfWidgetFormInput()
));

Все поля по умолчанию исчезают, и в форме есть только это поле 'name', а это не то, что я ищу.

Ответы [ 2 ]

1 голос
/ 10 декабря 2011

Если вы используете генератор генератора, как вы указали, вы можете редактировать свои формы через файл generator.yml.С помощью этого файла вы можете делать любое количество вещей, включая указание, какие виджеты вы хотите отображать, порядок ввода, действия и т. Д.

Файл generator.yml находится в / apps / app_name / modules / module_name /config

Подробнее об этом вы можете прочитать в symfony docs .

- Правка -

Если вы не используете файл generator.yml, вы можете редактировать класс формы напрямую, прочитайте эту статью, касающуюся форм Symfony длябольше информации.

Пример работы с виджетом:

//-----
//Remove Unwanted
//-----
unset(
    $this['created_at'],
    $this['updated_at'],
    $this['ingredient_list'] //Will be embedded due to extra meta data
);
//-----

// Add a select menu using model to populate values
$this->widgetSchema['state_list'] = new sfWidgetFormPropelChoice(array('model' => 'State', 'multiple' => true, 'order_by' => array('name', 'asc')));

// Add matching validator
$this->validatorSchema['state_list'] = new sfValidatorPropelChoice(array('model' => 'State', 'column' => 'id', 'multiple' => true));

// I can also force widget presentation order
$this->getWidgetSchema()->moveField('country_list', sfWidgetFormSchema::AFTER, 'state_list');

// You can also add a callback function when the form is submitted
$this->validatorSchema->setPostValidator(
    new sfValidatorCallback(array('callback' => array($this, 'dupeCheck')))
);
0 голосов
/ 10 декабря 2011

Если вы не используете генератор администратора, вы можете просто отредактировать шаблоны, созданные в папке /app/modulename/templates/.

Например, измените файл indexSuccess.php, содержащийся в этой папке, чтобы изменить структуру / информацию созданной таблицы, которая по умолчанию будет отображать всю информацию, которая существует в вашей таблице БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...