Я использую PHP Zendframework для создания форм. У меня есть сервисный объект, который мне нужно использовать, чтобы заполнить мой ServiceEditForm.php. Но в этой сервисной форме у меня есть Объект «Биллинг», «Подписка» и массив объекта «Команды». Ниже моя реализация класса обслуживания.
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 с моей формой редактирования, которая использовала данные, связанные с подпиской, выставлением счетов и командами, в качестве наборов полей. Я могу заполнить значения службы в форме, используя привязку, но не другие объекты. вот моя реализация формы
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'
),
));
}
}
Как я уже сказал, я не могу заполнить наборы полей связыванием в форме с помощью этой реализации. Любое предложение будет оценено.
Хотя я уже ответил на вопрос после поиска возможных решений, но реализации Hydrator, приведенные в этой ссылке, также полезны для объяснения тех самых основ, которые следует прочитать перед его использованием. Мое плохое, я не пошел на полное изучение прежде, чем осуществить наборы полей.
http://framework.zend.com/manual/current/en/modules/zend.stdlib.hydrator.html
Этот URL объясняет возможную реализацию гидраторов, которые могут предоставить вам очень легкое решение для вашего класса.
Других решений пока нет …