새로운 시스템에 대한 사용자 지정 구성을 시도하고 있습니다.폼 유효성 검사가 올바르게되지 않음 젠드 프레임 워크 2
필터를 사용하여 양식 유효성 검사가 중단되었습니다.
차 질문 :
$form = new CrudForm($this->getEntityManager());
$request = $this->getRequest();
if ($request->isPost()) {
$filter = new CrudFilter();
$form->setInputFilter($filter);
$post = $request->getPost();
$form->setData($post);
//$crudLogic->edit($crudLogic->populateEntity($post)->update());
if ($form->isValid()) {
}
}
이 양식 검증을 얻을하지 마십시오.
namespace Manager\Form;
use Zend\Form\Form;
use Zend\Form\Element;
use Doctrine\ORM\EntityManager;
class CrudForm extends Form
{
public function __construct(EntityManager $em)
{
parent::__construct('Crud');
$this->setAttribute('method', 'post');
$idcrud = new Element('idCrud');
$idcrud->setAttributes(array(
'name' => 'idCrud',
'id' => 'idCrud',
'type' => 'text',
));
$idcrud->setLabel('Id Crud');
$this->add($idcrud);
$idmodule = array(
'name' => 'idModule',
'type' => 'DoctrineModule\Form\Element\ObjectSelect',
'options' => array(
'label' =>'Id Module',
'object_manager' => $em,
'target_class' => 'Manager\Entity\Module',
'property' => 'name',
'empty_option' => 'Choose',
),
);
$this->add($idmodule);
$name = new Element('name');
$name->setAttributes(array(
'name' => 'name',
'id' => 'name',
'type' => 'text',
));
$name->setLabel('Name');
$this->add($name);
$createddate = new Element\Date('createdDate');
$createddate->setAttributes(array(
'name' => 'createdDate',
'id' => 'createdDate',
'type' => 'date',
'size' => '30',
'class' => 'datepicker',
));
$createddate->setLabel('Created Date');
$this->add($createddate);
$updateddate = new Element\Date('updatedDate');
$updateddate->setAttributes(array(
'name' => 'updatedDate',
'id' => 'updatedDate',
'type' => 'date',
'size' => '30',
'class' => 'datepicker',
));
$updateddate->setLabel('Updated Date');
$this->add($updateddate);
$send = new Element('submit');
$send->setValue('Submit');
$send->setAttributes(array(
'type' => 'submit'
));
$this->add($send);
}
}
필터 :
namespace Manager\Filter;
use Zend\InputFilter\InputFilter;
use Zend\InputFilter\InputFilterAwareInterface;
use Zend\InputFilter\InputFilterInterface;
class CrudFilter extends InputFilter
{
public function __construct()
{
$this->add(array(
'name' => 'IdCrud'
,'filters' => array(
array('name' => 'Int'),
)
));
$this->add(array(
'name' => 'IdModule'
,'required' => true
,'filters' => array(
array('name' => 'Int'),
)
));
$this->add(array(
'name' => 'Name'
,'required' => true
,'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 1,
'max' =>150,
),
),
)
));
}
} 나에게
놀람에서 전부하는 오류 나는 $ 양식을 수행 한 후 그러나 나를 미치게 만드는 것은이 양식은 간단하다는 것이다 -> isValid()가 그것 같이 반환 :
이array (size=2)
'createdDate' =>
array (size=1)
'isEmpty' => string 'Value is required and can't be empty' (length=36)
'updatedDate' =>
array (size=1)
'isEmpty' => string 'Value is required and can't be empty' (length=36)
그래서 문제가, 내가 심지어 필드에 검증을 선언하지 않는, 나타나서 t는 idModule과 이름 입력을 위해, 나는 시간을 잃어 버렸습니다. 심지어 선언하지 않는다고 생각합니다!
어디에서 확인할 수 있습니까?
편집 : 나는 심지어보기에 createdDate 및 updatedDate를 반향하지 그건 그렇고, 단지 데이터베이스 제어를 위해, 내가 양식 범위에서 검증 될 해당 필드 필요가 없습니다.
Edit2가 : 양식에서 createDate 및 updateDate을 제거함으로써, 내가 제로 메시지하는 오류를 얻을 수 있지만, 심지어 양식을 검증 할 수 없습니다! 유효한 양식이 필요합니다.
이러한 질문에 삽입되는 첫 번째 오류는 양식 요소 였고 필터 요소는 동일한 식별자를 사용하지 않았습니다.Filter i에있는 IdCrud와 Form idCrud를 볼 수 있습니다. 하지만 그것은 첫 번째 오류입니다, 나는 왜 왜 createdDate에서 유효성 검사를하는지 알지 못합니다. 하지만 그건 그렇고 난 그 createdDate 및 updatedDate 양식에서 제거하고 그냥 모델에 그 값을 설정할 수있었습니다. 계속할 수있는 과로와 함께 해결되지 않은 질문이었습니다. 긴 시간으로 죄송 –