私はZF2を学習し、フォームを作成しようとしているが、私は、フォームのアクションを呼び出すURLを実行するたびに、私は次のメッセージを取得しています:以下の場合は私のスタックをZend Frameworkの2のフォームフィールドセットエラー
Zend\Form\Fieldset::add requires that $elementOrFieldset be an object implementing Zend\Form\ElementInterface; received "string"
を:
#0 /Users/cesar/Documents/zf2course/vendor/zendframework/zend-form/src/Form.php(179):Zendの\フォーム\ Fieldset->( '場所'、アレイ)を追加
#1/Users/cesar/Documents/zf2course/module/Application/src/Application/Form/Info。 php(69):Zend \ Form \ Form-> add( 'location')
#2 /Users/cesar/Documents/zf2course/module/Application/src/Application/Controller/IndexController.php(25): Application \ Form \ Info \ __ construct()
#3 /Users/cesar/Documents/zf2course/vendor/zendframework/zend-mvc/src/Controller/AbstractActionController.php(82):Application \ Controller \ IndexController- > infoAction()
#4 [内部機能]:Zendの\ MVC \コントローラ\ AbstractActionController-> onDispatch(オブジェクト(Zendの\ MVC \ MvcEvent))
#5 /ユーザ/シーザー/ドキュメント/ zf2course /ベンダー/ Zendfram
#6/Users/cesar/Documents/zf2course/vendor/zendframework/zend-eventmanager(zend-MvcEvent)のework/zend-eventmanager/src/EventManager.php(490) /src/EventManager.php(263):Zend \ EventManager \ EventManager-> triggerListeners( 'dispatch'、オブジェクト(Zend \ Mvc \ MvcEvent)、オブジェクト(Closure))
#7/Users/cesar/Documents/(Zend \ Mvc \ MvcEvent))
#8のように表示されます。 /Users/cesar/Documents/zf2course/vendor/zendframework/zend-mvc/src/DispatchListener.php(118):Zend \ Mvc \ Controller \ Abstra
#9 [内部関数]:Zend \ Mvc \ DispatchListener-> onDispatch(Object(Zend \ Http \ PhpEnvironment \ Response) \ MVC \ MvcEvent))
#10 /Users/cesar/Documents/zf2course/vendor/zendframework/zend-eventmanager/src/EventManager.php(490):call_user_func(アレイ、オブジェクト(Zendの\ MVC \ MvcEvent) )
#11 /Users/cesar/Documents/zf2course/vendor/zendframework/zend-eventmanager/src/EventManager.php(263):Zendの\ EventManager \ EventManager-> triggerListeners( '派遣'、オブジェクト(Zendの\ Mvc \ MvcEvent)、オブジェクト(Closure)
Zend \ EventManager \ EventManager-> triggerEventUntil(Object(Closure)、Object(Zend \ Mvc \))、およびZend \ MendFactory(Zend \ Mvc \#13 /ユーザー/ Cesar/Documents/zf2course/public/index。PHP(21):Zendの\ MVC \応用 - >ファイル名を指定して実行()
#{メイン} 14は
は、私はこのようなフォームクラスを作成します。
<?php
namespace Application\Form;
use Zend\Form\Form;
use Zend\Form\Element;
class Info extends Form
{
public function __construct()
{
parent::__construct('info');
$location = new Element('location');
$location->setLabel('Location');
$location->setAttribute(array(
'type' => 'text',
'class' => 'form-control',
));
$sizeW = new Element\Number('size_w');
$sizeW->setLabel('Width Size');
$sizeW->setAttributes(array(
'min' => '0',
'max' => '500',
'step' => '0.1',
'class' => 'form-control'
));
$sizeH = new Element\Number('size_h');
$sizeH->setLabel('Height Size');
$sizeH->setAttributes(array(
'min' => '0',
'max' => '500',
'step' => '0.1',
'class' => 'form-control'
));
$type = new Element\Select('plot_type');
$type->setLabel('Plot Type');
$type->setAttribute('class', 'form-control');
$type->setValueOptions(array(
1 => 'Balcony',
2 => 'Plot',
));
$family = new Element\Number('family');
$family->setLabel('Family Aggregate Number');
$family->setAttributes(array(
'min' => '0',
'max' => '10',
'step' => '1',
'class' => 'form-control'
));
$diff = new Element\Select('diff');
$diff->setLabel('Gardening Type');
$diff->setAttribute('class', 'form-control');
$diff->setValueOptions(array(
1 => 'Begginner',
2 => 'Advanced',
));
$submit = new Element\Submit('submit');
$submit->setValue('Submit');
$submit->setAttribute('class', 'btn btn-primary');
$this->add('location');
$this->add('size_w');
$this->add('size_h');
$this->add('plot_type');
$this->add('family');
$this->add('diff');
$this->add('submit');
}
}
そして私はinfocontrollerと呼ばれますそのようなフォームで:
...
public function infoAction()
{
$form = new Info();
if ($this->request->isPost())
{
$form->setData($this->request->getPost());
// save stuff
}
return new ViewModel(array(
'form' => $form,
));
}
私は何かが足りないか、私は、このフィールドセットクラスを作成するために必要でしたし、それは私にこのエラーを与えている理由ですか? また誰かが私に送る良いzf2チュートリアルを持っているなら、それはとてもいいと思います。
私はチュートリアルを間違って読んでいました。 私はそのチュートリアルにも従っていましたが、ちょっと混乱しました。 多分、ZFは私にとって現時点では先進的ですが、私は努力しています。 これはトリックを行い、フォームを機能させることができました。ありがとう –