ZF2 V.2.1+ の新しい ServiceManager テクニックを使用して、カスタム要素を作成し、短い名前を使用して要素をフォームに追加したい
Zendドキュメントの同じサンプルをステップごとにコピーしようとしていますが、うまくいきません。
短い名前を書いてサービスを使用すると、サービスが見つからないため例外が発生します。
Zend\ServiceManager\Exception\ServiceNotFoundException
File:
Zend\ServiceManager\ServiceManager.php:456
Message:
Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for Test
私はすべてのクラスを同じように持っていると思います。以下を参照してください
これは私のカスタム要素です:
namespace SecureDraw\Form\Element;
use Zend\Form\Element\Text;
class ProvaElement extends Text {
protected $hola;
public function hola(){
return 'hola';
}
}
これは私の Module.php です。呼び出し可能なサービスで短い名前を使用できるようにしています。
class Module implements FormElementProviderInterface {
//Rest of class
public function getFormElementConfig() {
return array(
'invokables' => array(
'Test' => 'SecureDraw\Form\Element\ProvaElement'
)
);
}
}
要素の追加に使用するフォームでは、コメント行は正常に機能しますが、短い名前では機能しません。
$this->add(array(
'name' => 'prova',
//'type' => 'SecureDraw\Form\Element\ProvaElement',
'type' => 'Test', //Fail
));
私の行動では:
$formManager = $this->serviceLocator->get('FormElementManager');
$form = $formManager->get('SecureDraw\Form\UserForm');
$prova = $form->get('prova');
echo $prova->hola();