Прототип embedRelation ссылается на массив 'options' (передается как $ formArguments / $ formargs).
Можно ли передать массив параметров:
embedRelation("Model","ModelForm",$options_arr);
Где options_arr содержит валидатор формы / виджеты / etc для установки для отношения?
$formargs['something']['publish_date'] = new sfWidgetFormInputText();
Или возможно ли ограничить поля формы, отображаемые для отношения, следующим образом?
$formargs['something']['use_fields'] = array('publish_date');
Из sfFormDoctrine.class.php
...
* Embed a Doctrine_Collection relationship in to a form
*
* [php]
* $userForm = new UserForm($user);
* $userForm->embedRelation('Groups AS groups');
*
* @param string $relationName The name of the relation and an optional alias
* @param string $formClass The name of the form class to use
* @param array $formArguments Arguments to pass to the constructor (related object will be shifted onto the front)
* @param string $innerDecorator A HTML decorator for each embedded form
* @param string $decorator A HTML decorator for the main embedded form
*
* @throws InvalidArgumentException If the relationship is not a collection
*/
public function embedRelation($relationName, $formClass = null, $formArgs = array(), $innerDecorator = null, $decorator = null)
...
Самое близкое, что мне удалось получить к спецификации для массива $ formArgs (), это sfFormPropel.class.php (я использую доктрину 1.2):
* `title`: The title of the collection form once embedded. Defaults to the relation name.
* `embedded_form_class`: The class name of the forms to embed. Uses the model name by default (a form based on a collection of Book objects embeds BookForm objects).
* `collection_form_class`: Class of the collection form to return. Defaults to sfFormPropelCollection.
* `hide_on_new`: If true, the relation form does not appear for new objects. Defaults to false.
* `add_empty`: Whether to allow the user to add new objects to the collection. Defaults to true.
* `add_delete`: Whether to add a delete widget for each object. Defaults to true.
* `remove_fields`: The list of fields to remove from the embedded object forms
* `item_pattern`: The pattern used to name each embedded form. Defaults to '%index%'.
If `add_empty` is set to `true`, the following additional options are available:
* `empty_label`: The label of the empty form. Defaults to 'new' + the relation name.
* `add_link`: The text of the JavaScript link that displays the empty form. Defaults to `Ann new`
* `max_additions`: The max number of additions accepted on the client side. Defaults to 0 (no limit)
If `add_delete` is set to `true`, the following additional options are available:
* `delete_name`: Name of the delete widget. Defaults to 'delete'.
* `delete_widget`: Optional delete widget object. If left null, uses a `sfWidgetFormDelete` instance, which is a checkbox widget with a Javascript confirmation.
* `alert_text`: The text of the Javascript alert to show.
* `hide_parent`: Whether to hide the deleted form when clicking the checkbox. Defaults to true.
* `parent_level`: The number of times parentNode must be called to reach the parent to hide. As a widget doesn't know if it's merged or embedded, this setting allows the JavaScript code used to hide the parent to find it. Recommended values: 6 for embedded form (default), 7 for merged form.
Любое понимание будет с благодарностью.