Zend Framework アプリケーションで (カスタム ビュー ヘルパーを使用して) いくつかのカスタム フォーム要素を作成する必要があります。問題は、それらがそれぞれ非常に似ていることです。これらのそれぞれを拡張できる基本ビュー ヘルパー クラスを作成し、必要な抽象関数を実装したいと考えています。
解決:
したがって、私のPicker
要素が抽象クラスでContactPicker
ありOrganizationPicker
、拡張クラスである場合...
フォーム要素:
class My_Form_Element_ContactPicker extends My_Form_Element_Picker
{
/**
* Default form view helper to use for rendering
* @var string
*/
public $helper = "contactPickerElement";
}
ビュー ヘルパー:
class My_View_Helper_ContactPickerElement extends My_View_Helper_PickerElement
{
public function contactPickerElement($name, $value = null, $attribs = null)
{
// I don't need to do anything in this function.
// I only need the parent to do all the work.
return parent::pickerElement($name, $value, $attribs);
}
protected function myAbstractFunctionThatMustBeImplemented()
{
// This function will do all the work specific to this extending class.
$model = new ContactModel();
return $model->foobar;
}
}
そして、ここに抽象ビューヘルパーがあります:
abstract class Evanta_View_Helper_PickerElement extends Zend_View_Helper_FormElement
{
/**
* This function would have been called automatically, but since it's being extended...
* Any extending classes must remember to manually call this function
*/
public function modalPickerElement($name, $value = null, $attribs = null)
{
$html = 'My picker element HTML';
return $html;
}
/**
* This function must be implemented by any extending classes
*/
abstract protected function myAbstractFunctionThatMustBeImplemented();
}