首页 文章

注意:未定义的索引

提问于
浏览
0

我提交表单时出现此错误消息 .

注意:未定义的索引:第38行的C:\ xampp \ htdocs \ ameyaw \ module \ BusinessGhana \ src \ Service \ AutosManager.php中的 Headers 注意:未定义的索引:C:\ xampp \ htdocs \ ameyaw \ module \ BusinessGhana中的描述第39行上的\ src \ Service \ AutosManager.php注意:未定义的索引:第58行的C:\ xampp \ htdocs \ ameyaw \ module \ BusinessGhana \ src \ Service \ AutosManager.php中的特征消息:执行'INSERT时发生异常INTO auto(title,description,featured,date_created)VALUES(?,?,?,?)'with params [null,null,null,“2017-06-15 05:04:44”]:SQLSTATE [23000]:完整性约束违规:1048列“ Headers ”不能为空

这是我的表格和字段集

use Zend\Form\Fieldset;
use Doctrine\Common\Persistence\ObjectManager;
use DoctrineModule\Persistence\ObjectManagerAwareInterface;
use BusinessGhana\Entity\Autos;

class AddFieldset extends Fieldset 
{

 protected $objectManager;

 public function init()
{   

$this->add([        
    'type'  => 'text',
    'name' => 'title',
    'attributes' => [
        'id' => 'autoTitle'
    ],
    'options' => [
        'label' => 'Title',
        'display_empty_item' => true,
        'empty_item_label'   => 'Maximum of 60 characters',
    ],
]);

$this->add([            
    'type'  => 'textarea',
    'name' => 'description',
    'attributes' => [
        'id' => 'autoDescription'
    ],
    'options' => [
        'label' => 'Description',
        'display_empty_item' => true,
        'empty_item_label'   => 'description',
    ],
]);             
 $this->add([        
    'type'  => 'radio',
    'name' => 'featured',
    'attributes' => [
        'id' => 'autoFeatured'
    ],
    'options' => array(
        'label' => 'Featured',
        'value_options' => array(
            array('value' => '0',
                'label' => 'No',
                'selected' => true,
                'label_attributes' => array(
                    'class' => 'col-sm-2 btn btn-default',
                ),
            ),
            array(
                'value' => '1',
                'label' => 'Yes',
                'label_attributes' => array(
                    'class' => 'col-sm-2 btn btn-danger',
                ),
            ),
        ),
        'column-size' => 'sm-12',
        'label_attributes' => array(
            'class' => 'col-sm-2',
        ),
    ),
]);

}

}

use Zend\Form\Form;
//use Zend\InputFilter\InputFilter;


class AddForm extends Form
{
public function init()
{
 $this->add([
    'name' => 'dependentForm',
    'type' => AddFieldset::class,

]);

$this->add([
    'type' => 'submit',
    'name' => 'submit',
    'attributes' => [
        'value' => 'Submit',
    ],
]);
}
}

这是我的控制器动作

public function addAction()
{
 // Create the form.
 $form = new PostForm();

 if ($this->getRequest()->isPost()) {

    // Get POST data.
    $data = $this->params()->fromPost();

    // Fill form with data.
    $form->setData($data);
    if ($form->isValid()) {

        // Get validated form data.
        $data = $form->getData();
        $this->AutosManager->addNewAutos($data);
        return $this->redirect()->toRoute('retrieve');
    }
}  
return new ViewModel([
    'form' => $form
]);
}

我知道补水可以解决这个问题,但我不知道如何使用它 . 谢谢你的帮助 .

这是我的autosManager

class AutosManager
{
 /**
 * Entity manager.
 * @var Doctrine\ORM\EntityManager;
 */
 private $entityManager;

 /**
 * Constructor.
 */
 public function __construct($entityManager)
 {
    $this->entityManager = $entityManager;
 }

 public function addNewAutos($data) 
 {
    $autos = new Autos();
    $autos->setTitle($data['title']);
    $autos->setDescription($data['description']);
    $autos->setFeatured($data['featured']);
    $currentDate = date('Y-m-d H:i:s');
    $autos->setDateCreated($currentDate);        

    $this->entityManager->persist($autos);

    $this->entityManager->flush();
  }  
 }

我可以从数据库中检索数据 .

这是我渲染表单的地方:

$form = $this->form;
        $fieldset = $form->get('dependentForm');

        $title = $fieldset->get('title');
        $title->setAttribute('class', 'form-control');
        $title->setAttribute('placeholder', 'Maximum of 60 characters');
        $title->setAttribute('id', 'autoTitle');

        $description = $fieldset->get('description');
        $description->setAttribute('class', 'form-control');
        $description->setAttribute('placeholder', 'Description here...');
        $description->setAttribute('id', 'autoDescription');

        $featured = $fieldset->get('featured');
        $featured->setAttribute('id', 'autoRadio');

    $form->get('submit')->setAttributes(['class'=>'btn btn-primary']);
        $form->prepare();
        echo $this->form()->openTag($form);
        ?>

        <fieldset>

        <div class="form-group">
            <?= $this->formLabel($title) ?>
            <?= $this->formElement($title) ?>
 <?= $this->formElementErrors()->render($title,['class'=>'help-block'])?>
        </div>

        <div class="form-group">
            <?= $this->formLabel($description) ?>
            <?= $this->formElement($description) ?>
 <?=$this->formElementErrors()->render($description,
    ['class'=>'help-block'])?>
        </div>

        <div class="form-group">
            <?= $this->formLabel($featured) ?>
            <?= $this->formElement($featured) ?>
  <?= $this->formElementErrors()->render($featured, 
   ['class' =>'help-block']) ?>
        </div>
        </div></div><div class="row">
            <div class="col-md-4">

        </fieldset>
         <?= $this->formElement($form->get('submit')); ?>

1 回答

  • 0

    在函数 addNewAutos($data) 中:$ data变量没有 titledescriptionfeatured 个字段 . 所以php认为这些是 null ,你的 $this->entityManager->flush() 会尝试在数据库中写入空值,但你有一个约束,至少 title 不能为空 .

    因此,检查 $data 数组是否包含 titledescriptionfeatured 字段,然后才能启动 Auto 对象...

相关问题