Простой, но Zend-подобный способ рендеринга собственного радио - это создание собственного помощника вида:
<?php
class Zend_View_Helper_Radio extends Zend_View_Helper_Abstract {
protected $name;
protected $value;
protected $id;
public function radio($name, $value, $id = null) {
$this->id = $id;
$this->name = $name;
$this->value = $value;
return $this;
}
public function render() {
$html = '';
$html .= '<input type=radio';
if ($this->id) {
$html .= ' id="' . htmlspecialchars($this->id) . '"';
}
$html .= ' name="' . htmlspecialchars($this->name) . '"';
$html .= ' value="' . htmlspecialchars($this->value) . '"';
$html .= ' />';
return $html;
}
public function __toString() {
try {
return $this->render();
} catch (Exception $e) {
return $e->getMessage();
}
}
}
Затем вы можете визуализировать элементы так же, как уже упоминалось Хикару-Синдо, используя помощник:
foreach ($form->gender->getMultiOptions() as $value => $name) {
echo '<label for="gender-', $value, '">';
echo $this->radio('gender', $value, 'gender-' . $value);
echo '<img src="/css/gender-', $value, '.png">';
echo $name, '</label>';
};
Конечно, вы можете создать другой View Helper специально для вашего случая и затем отобразить как
$this->genderSelection($form->gender->getMultiOptions());