我是新手ZF3
我已经完成了搜索表单并使用zend 3实现了自动完成建议,但是我得到了一个错误消息warning : in Invalid argument supplied for foreach() in \zendframework\zend-form\src\Form.php on line 773
然后,我确实删除了$form->prepare();,并且消息错误不会出现,但是一旦单击并验证了该按钮,则错误消息返回
我的addkelas.phtml
<?php
$form->setAttribute('action',$this->url('kelasbimbingan',['action'=>'addkelas']));
$form->prepare();
echo $this->form()->openTag($form);
?>
<p>Type students names:</p>
<div id="prefetch">
<?= $this->formElement($form->get('nama')); ?>
</div>
<br>
<div>
<?php
echo $this->formSubmit($form->get('submit'))."<br>";
echo $this->form()->closeTag();
?>
</div>
<?php
echo "<script language='javascript'> var country_list =".$data.";</script>";
$this->headScript()
->appendFile('/js/typeahead.bundle.js', 'text/javascript')
->appendFile('/js/bloodhound.js', 'text/javascript')
->appendFile('/js/autocompletejavascript.js', 'text/javascript');
?>我的addkelasAction()
public function addkelasAction()
{
$form = new CarimahasiswaForm();
$data = \Zend\Json\Json::encode($this->getMahasiswaData());
if ($this->getRequest()->isPost()) {
//get data, fill in the form with POST data
// Fill in the form with POST data
$dataMahasiswa = $this->params()->fromPost();
$form->setData($dataMahasiswa);
//validate form
// print_r($data);
if($form->isValid()){
$dataMahasiswa = $form->getData();
print_r($dataMahasiswa);
}
}
return new ViewModel(['form'=>$form,'data'=>$data]);
}还有我的表格
<?php
namespace Skripsiku\Form;
use Zend\Form\Form;
use Zend\Form\Fieldset;
use Zend\InputFilter\InputFilter;
use Zend\Form\Element;
class CarimahasiswaForm extends Form
{
public function __construct()
{
parent::__construct('tambah-kelas');
$this->getElements();
$this->add([
'name'=>'submit',
'type'=>'submit',
'attributes'=>[
'value'=>'Cari Mahasiswa',
'id'=>'SaveButton',
'class'=>'btn btn-info btn-md',
],
]);
}
public function getElements()
{
$this->add([
'name'=>'nama',
'type'=>'text',
'attributes'=>[
'placeholder'=>'Ketik Nama Mahasiswa',
'class'=>'typeahead',
],
'options'=>[
'label'=>'Cari Mahasiswa :',
]
]);
}
private function addInputFilter()
{
// Create main input filter
$inputFilter = new InputFilter();
$this->setInputFilter($inputFilter);
$inputFilter->add([
'name' => 'nama',
'required' => true,
'filters' => [
['name' => 'StringTrim'],
['name' => 'StripTags'],
],
'validators' => [
[
'name' => 'StringLength',
'options' => [
'encoding' => 'UTF-8',
'min' => 5,
'max' => 255,
],
],
],
]);
}
}
?>请建议..。对不起我的英语不好..。谢谢
发布于 2017-06-02 07:59:54
Zend扩展了声明一个getElements函数的字段集
public function getElements()
{
return $this->elements;
}抛出异常/错误的行试图循环遍历从以下位置检索的值:
$elements = $fieldset->getElements();您可能认为$fieldset != $this在给定的上下文中,但是zend 处理类似于字段集的窗体。
$this->attachInputFilterDefaults($this->filter, $this);解决方案:不要覆盖getElements函数,要么将当前函数重命名,要么将该代码添加到构造函数中。
https://stackoverflow.com/questions/44301813
复制相似问题