ここでバナナを食べます。2 つのフィールドを含む単純なフォームを作成しました。1 つはテキスト フィールド、もう 1 つはテキストエリアです。フォームは見栄えがしますが、何を試しても検証しません。
ここに私のフォームクラスがあります:
class MyForm extends Form
{
public function __construct()
{
parent::__construct();
$this->add(array(
'name' => 'subject',
'required' => true,
'allowEmpty' => false,
'options' => array(
'label' => 'Betreff*',
),
'type' => 'Zend\Form\Element\Text',
'validators' => array(
// validators for field "name"
new \Zend\Validator\NotEmpty(),
),
'filters' => array(
// filters for field "name"
array('name' => 'Zend\Filter\StringTrim'),
),
));
$this->add(array(
'name' => 'text',
'required' => true,
'allowEmpty' => false,
'options' => array(
'label' => 'Nachricht*',
),
'type' => 'Zend\Form\Element\Textarea',
));
$this->add(new Element\Csrf('security'));
}
}
valdiators
とはfilters
、私が試した多くのことの1つにすぎません...
ここのコントローラーでは、フォームは常に有効です。
$form = new MyForm();
$request = $this->getRequest();
if ($request->isPost()) {
$form = new MyForm();
$form->setData($request->getPost());
echo $form->isValid();
if($form->isValid()) { ... }
私はいつもif
.
私は疑問に思っています: を設定するときに、とにかくバリデーターが必要なのはなぜrequired=true
ですか? 何もしていないのに、なぜそのような属性を実装するのでしょうか?
それでも: フォームを検証するにはどうすればよいですか? trim
クリーンアップフィルターとバリデーターが欲しいだけですNotEmpty
。
ありがとう!