Для моей формы я хотел бы, чтобы месяц упал, а год - упал.
Я бы хотел, чтобы они появились рядом друг с другом. Они могут быть отдельными элементами в zend_form, комбинировать и проверять их в контроллере, но для дизайна я бы хотел, чтобы они сидели рядом друг с другом.
Я мог бы добиться этого, не ставя метки на год, а затем выполняя некоторые хитрости css, но я хотел бы более чистого решения.
Редактировать, Окончательный код:
public function init($options=array()) {
$this->setName('add');
$this->setMethod('post');
$name = new Zend_Form_Element_Text('name');
$number = new Zend_Form_Element_Text('number');
$cvv = new Zend_Form_Element_Text('cvv');
$expiry_month = new Zend_Form_Element_Select('expiry_month');
$expiry_year = new Zend_Form_Element_Select('expiry_year');
$amount = new Zend_Form_Element_Select('amount');
$submit = new Zend_Form_Element_Submit('Submit');
$amounts = self::load_amounts();
$months = self::load_months();
$years = self::load_years();
$name->setLabel("Name On Card")->setIgnore(false)->setRequired(true);
$number->setLabel("Card Long Number")->setIgnore(false)->setRequired(true);
$cvv->setLabel("CVV2")->setIgnore(false)->setRequired(true);
$expiry_month->setMultiOptions($months);
$expiry_year->setMultiOptions($years);
$amount->setLabel("Amount")->setIgnore(false)->setRequired(true)->setMultiOptions($amounts);
$submit->setLabel("Submit")->setIgnore(true);
$this->addElements(array($name, $number, $cvv, $expiry_month, $expiry_year, $amount, $submit));
$this->addDisplayGroup(array('expiry_month', 'expiry_year'), 'Expires');
}
и если это кому-нибудь пригодится, я не думаю, что вы можете установить метку, но вы можете установить заголовок набора полей с помощью:
$this->addDisplayGroup(array('address', 'city', 'state', 'country', 'zip'), 'Address', array('legend' => 'Billing Address'));