как сохранить форму коллекции в symfony 1.4 - PullRequest
0 голосов
/ 29 января 2012

Я создал форму коллекции в Symfony 1.4 и Propel 1.5, и все отображается правильно, но я не могу сохранить форму в базе данных.

Форма используется для редактирования нескольких пользователей одновременно.

Я нашел этот вопрос и реализовал предложение о расширении класса collectionForm с помощью sfFormPropel, но когда я это делаю, мне не хватает памяти. Я не могу найти то, что извлекается из базы данных, чтобы заполнить память процессов.

В моей новой функции сохранения я даже ничего не делаю.

Есть идеи?

class ContactCollectionForm extends sfFormPropel
{
    public function getModelName()
    {
        return 'ContactCollectionForm';
    }

    public function retrieveSubObject($fieldname, $model)
    {
        switch($fieldname)
        {
            default:
                break;
        }
        return array();     
    }

    public function save($con = null)
    {

    }

    public function configure()
    {
        $user           = $this->getOption('user');
        $embedded       = $this->getOption('embedded');
        $custom         = $this->getOption('custom');
        $contact_list   = $this->getOption('contact_list');
        $cf             = $custom['form'];

        if(!array_key_exists(0, $cf['fields']['field']))
            $cf['fields']['field']  = array($cf['fields']['field']);

        $use_fields     = array();

        for($i=0;$i<count($contact_list);$i++)
        {
            foreach($cf['fields']['field'] as $field)
            {
                if($field['type'] == 'object')
                {
                    // embed object form (ala: PersonData, Coordinate etc...)
                    $model      = $field['model'];
                    $model_form = $model.'Form';

                    $sub_object = $contact_list[$i];

                    $sub_form   = new $model_form($sub_object, array('user' => $user, 'embedded' => true, 'custom' => $field['fields']));
                    $this->embedForm($field['name'], $sub_form);
                    array_push($use_fields, $field['name']);

                }   // end field type == object
                else
                {
                    // standard form field
                    $this->setWidget($field['name'], CustomWidgetExtender::createSfWidget($field, $user, $this));
                    $this->widgetSchema->setLabel($field['name'], $field['label']);

                    if(trim($field['default']) != '')
                        $this->setDefault($field['name'], $field['default']);

                    // add field name to use_fields array
                    array_push($use_fields, $field['name']);                
                }   // end field type != object
            }

        }
    }

}

1 Ответ

1 голос
/ 22 августа 2012

Я закончил грубым взломом, обработав каждую форму вручную, а не пытаясь вставить этот тип формы в структуру форм Symfony 1.x.

...