заполнение наборов полей Zend-формы объектами внутри объекта

1

Я использую PHP Zendframework для создания форм. У меня есть объект службы, который мне нужно использовать для заполнения моего ServiceEditForm.php. Но в этой служебной форме у меня есть объект "Биллинг", "Подписка" и массив объектов "Команды". Ниже приведена моя реализация класса Service.

 class Service{
public $service_id;
public $ServiceName;
public $TelecomOperator;
public $SubMethod;
public $Provider;
public $active;



public $billingType;
public $subscriptionPlan;
public $commands;

function exchangeArray(array $data);}

Я хочу привязать объект класса Service к моей форме редактирования, которая использовала атрибуты подписки, биллинга и команд в качестве полей. Я могу заполнить значения службы в форме, используя bind, но не другие объекты. вот моя реализация формы

     class ServiceEditForm extends Form{

public function __construct($name = null)
{
    parent::__construct('Edit Service');
    $this->setAttribute('method', 'post');
    $this->setAttribute('enctype','multipart/form-data');

    //here i have other fields that belongs to service object

    $this->add( array(
        'name' => 'billingType',
        'type' => 'Services\Form\BillingTypeFieldset',
        'options' => array(
            'label' => 'Billing Type',
        ),
    ));


    $this->add( array(
        'name' => 'subscriptionPlan',
        'type' => 'Services\Form\SubscriptionPlanFieldset',
        'options' => array(
            'label' => 'Subscription Plan',
        ),
    ));

    $this->add(array(
         'type' => 'Zend\Form\Element\Collection',
         'name' => 'commands',
         'options' => array(
             'label' => 'commands',
             'count' => 2,
             'should_create_template' => true,
             'allow_add' => true,
             'target_element' => array(
                 'type' => 'Services\Form\CommandFieldset',
             ),
         ),
     ));

    $this->add(array(
        'name' => 'submit',
        'attributes' => array(
            'type'  => 'submit',
            'value' => 'Save'
        ),
    )); 
}

}

Как я уже сказал, я не могу заполнять поля с привязкой в форме с этой реализацией. Любое предложение будет оценено по достоинству.

  • 0
    Я могу немного исследовать и решить (но не до конца понять концепцию). Я заменяю методы класса гидратора на ArraySerializable и делаю оборот для меня.
Теги:
data-binding
zend-framework2

1 ответ

0

Хотя я уже отвечаю на вопрос после поиска возможных решений, но решения Hydrator, приведенные в этой ссылке, также полезны для объяснения самих основ, которые следует прочитать перед использованием. Мой плохой я не пошел на полное дросселирование, прежде чем внедрять поля.

http://framework.zend.com/manual/current/en/modules/zend.stdlib.hydrator.html

Этот url объясняет возможную реализацию гидраторов, которые могут предоставить вам очень удобное решение для вашего класса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню