Zend_Captchaは便利だがデコレータが糞(あえて。)なのでこんなことをした。

デザインの都合上Zend_Captchaの画像部分と入力部分を分離してrender()したいが、なんかどうにもならない予感がするのでこんな風にしてみた
form

class Hoge_Form extends Zend_Form{
  public function init(){
    $this->captcha = new Zend_Form_Element_Captcha(...);
    $this->captcha->setDecorators(array("captcha"));
    $this->addElements(array(
      $this->captcha,
      ...
    ));
  }
}

controller

public function hogeAction(){
  $this->view->assign("form",new HogeForm());
}

view

<div>
<? echo $this->form->captcha ?>
</div>
<div id="captcha_input_box"></div>
<script type="text/javascript">
$(function(){
	$("#captcha-input").remove().appendTo("#captcha_input_box");
});
</script>

Decoratorでどうこうするのは諦めて、jQueryで入力要素を移動。