我正在使用PHP Zendframework来构建表单。我有服务对象,我需要用来填充我的ServiceEditForm.php。但是在这种服务形式中,我有对象" Billing","订阅"和对象数组"命令"。下面是我对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类的对象绑定到我的Edit表单,该表单使用订阅,计费和命令相关数据作为字段集。我能够使用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'
),
));
}
}
正如我所说,我无法使用此实现在表单中填充带有bind的字段集。任何建议将不胜感激。
答案 0 :(得分:0)
虽然我在查找可能的解决方案之后已经回答了这个问题,但是此链接中给出的Hydrator实现对于解释在使用之前应该阅读的基础知识也很有用。我的不好,我没有在实施字段集之前进行完全限制的研究。
http://framework.zend.com/manual/current/en/modules/zend.stdlib.hydrator.html
此网址解释了可能为您的班级提供非常简单的装订解决方案的水合物的实施方案。