Zend framework2 zf2表单中文本元素的默认值

Zend framework2 zf2表单中文本元素的默认值,zend-framework2,zend-form,Zend Framework2,Zend Form,如何为ZF2表单中的文本元素设置默认值 我尝试了以下方法: 在视图文件中。这不会获取数据,也不会保存: if($form->get('agencyName')->getValue() === '') $form->get('agencyName')->setValue('Virtual Field Practicum'); 这既不影响视图,也不影响数据库: $this->add(array( 'name' => 'agencyNam

如何为ZF2表单中的文本元素设置默认值

我尝试了以下方法:

  • 在视图文件中。这不会获取数据,也不会保存:

    if($form->get('agencyName')->getValue() === '')
        $form->get('agencyName')->setValue('Virtual Field Practicum');
    
  • 这既不影响视图,也不影响数据库:

    $this->add(array(
            'name' => 'agencyName',
    
            'options' => array(
                'label' => 'Agency Name',
            ),
            'attributes' => array(
                'disabled' => 'disabled',
                'value' => 'Virtual Field Practicum',
            )
        ));
    
  • 我还尝试用两种方式修改实体,但它并没有影响任何东西:

    public function __construct()
    {
        //set default agency name
        $this->agencyName = 'Virtual Field Practicum';
    }
    
  • 或:

    编辑1 将我的常规操作添加到帖子:

    1) 这一个负责加载表单,并处理非ajax调用:

    public function editTabAction()
    {
        $buildName = $this->params()->fromRoute('buildName', 'unknown');
    
        if ($buildName == 'unknown') {
            $buildName = $this->params()->fromPost('buildName', 'unknown');
    
            if ($buildName == 'unknown') {
                trigger_error('Could not retrieve build name for ' . $buildName . ' entity for this form!');
            }
        }
    
        //extract parameter from dispatch command
        $studEvalId = (int)$this->params()->fromRoute('studEvalId', 0);
    
        if ($studEvalId == 0) {
            //extract parameter from the form submission
            $studEvalId = (int)$this->params()->fromPost('studEvalId', 0);
            if ($studEvalId == 0) {
                return $this->notFoundAction();
            }
        }
    
        $data = $this->getEntity($buildName, $studEvalId);
    
        // Get your ObjectManager from the ServiceManager
        $objectManager = $this->getEntityManager();
    
    
        // get from from FormElementManager plugin
        //forms are defined in Module.php
        $formName = $buildName . "Form";
        $sl = $this->getServiceLocator();
        $form = $sl->get('FormElementManager')->get($formName);
    
        $form->setHydrator(new DoctrineHydrator($objectManager ));
        $form->setObject($this->getEntityInstanceFromBuildName($buildName));
    
        $form->bind($data);
    
        //set class and Id for buttons like SaveChanges to reference it
        $form->setAttribute('class', "studentFormsClass_$studEvalId");
        $form->setAttribute('id', "studentFormsId_$studEvalId" . "_$buildName");
    
    
        //set buildName to the form
        $form->get('buildName')->setAttribute('value', $buildName);
    
        $request = $this->getRequest();
        if ($request->isPost()) {
            $formValidatorName = "OnlineFieldEvaluation\Form\\" . $buildName . "FormValidator";
            $formValidator = new  $formValidatorName();
            $form->setInputFilter($formValidator->getInputFilter());
    
            $form->setData($request->getPost());
    
            if ($form->isValid()) {
                $this->savetodb($form->getData(), $buildName);
    
                // Redirect to list of forms
                return false;
            } else {
                foreach ($form->getMessages() as $messageId => $message) {
                    echo '<pre>';
                    echo "Validation failure '$messageId':";
                    print_r($message);
                    echo '</pre>';
                }
            }
        }
    
        $view = new ViewModel(array(
            'studEvalId' => $studEvalId,
            'buildName' => $buildName,
            'form' => $form,
        ));
        $view->setTemplate('online-field-evaluation/tabs/edit' . $buildName . '.phtml');
    
        return $view;
    }
    
    public function addAction()
    {
         $form = new YourAgencyForm();
    
         $form->get('agencyName')->setValue('Virtual Field Practicum');
         ....
    
    公共函数editTabAction()
    {
    $buildName=$this->params()->fromRoute('buildName','unknown');
    如果($buildName==“未知”){
    $buildName=$this->params()->fromPost('buildName','unknown');
    如果($buildName==“未知”){
    触发器_错误('无法检索此表单的“$buildName.”实体的生成名!');
    }
    }
    //从调度命令中提取参数
    $studEvalId=(int)$this->params()->fromRoute('studEvalId',0);
    如果($studEvalId==0){
    //从表单提交中提取参数
    $studEvalId=(int)$this->params()->fromPost('studEvalId',0);
    如果($studEvalId==0){
    返回$this->notFoundAction();
    }
    }
    $data=$this->getEntity($buildName,$studEvalId);
    //从ServiceManager获取您的ObjectManager
    $objectManager=$this->getEntityManager();
    //从FormElementManager插件获取
    //表单在Module.php中定义
    $formName=$buildName.“Form”;
    $sl=$this->getServiceLocator();
    $form=$sl->get('FormElementManager')->get($formName);
    $form->setHydrator(新的DoctrineHydrator($objectManager));
    $form->setObject($this->getEntityInstanceFromBuildName($buildName));
    $form->bind($data);
    //为SaveChanges之类的按钮设置类和Id以引用它
    $form->setAttribute('class','studentFormsClass_u$studEvalId');
    $form->setAttribute('id',“studentFormsId_$studEvalId”。“$buildName”);
    //将buildName设置为表单
    $form->get('buildName')->setAttribute('value',$buildName);
    $request=$this->getRequest();
    如果($request->isPost()){
    $formValidatorName=“OnlineFieldEvaluation\Form\\”$buildName。“FormValidator”;
    $formValidator=新的$formValidatorName();
    $form->setInputFilter($formValidator->getInputFilter());
    $form->setData($request->getPost());
    如果($form->isValid()){
    $this->savetodb($form->getData(),$buildName);
    //重定向到表单列表
    返回false;
    }否则{
    foreach($form->getMessages()作为$messageId=>$message){
    回声';
    
        public function validatepostajaxAction()
        {
    
            $request = $this->getRequest();
            $response = $this->getResponse();
    
            $buildName = $this->params()->fromRoute('buildName', 'unknown');
    
            if ($buildName == 'unknown') {
                $buildName = $this->params()->fromPost('buildName', 'unknown');
    
                if ($buildName == 'unknown') {
                    trigger_error('Could not retrieve build name for ' . $buildName . ' entity for this form!');
                }
            }
    
            //extract parameter from dispatch command
            $studEvalId = (int)$this->params()->fromRoute('studEvalId', 0);
    
            if ($studEvalId == 0) {
                //extract parameter from the form submission
                $studEvalId = (int)$this->params()->fromPost('studEvalId', 0);
                if ($studEvalId == 0) {
    
                    return $this->notFoundAction();
                }
            }
    
            $data = $this->getEntity($buildName, $studEvalId);
            $objectManager = $this->getEntityManager();
    
            $formName = $buildName . "Form";
            $sl = $this->getServiceLocator();
            $form = $sl->get('FormElementManager')->get($formName);
    
            $form->setHydrator(new DoctrineHydrator($objectManager ));
            $entityName = 'OnlineFieldEvaluation\Entity\\' . $buildName;
            $form->setObject(new $entityName());
    
            $form->bind($data);
    
            //set class and Id for buttons like SaveChanges to reference it
            $form->setAttribute('class', "studentFormsClass_$studEvalId");
            $form->setAttribute('id', "studentFormsId_$studEvalId" . "_$buildName");
    
    
            //set buildName to the form
            $form->get('buildName')->setAttribute('value', $buildName);
    
            $messages = array();
            if ($request->isPost()) {
                $formValidatorName = "OnlineFieldEvaluation\Form\\" . $buildName . "FormValidator";
                $formValidator = new  $formValidatorName();
                $form->setInputFilter($formValidator->getInputFilter());
    
                $form->setData($request->getPost());
    
                if (!$form->isValid()) {
                    $errors = $form->getMessages();
                    foreach ($errors as $key => $row) {
    
                        if (!empty($row) && $key != 'submit') {
                            foreach ($row as $keyer => $rower) {
                                //save error(s) per-element that
                                //needed by Javascript
                                $messages[$key][] = $rower;
                            }
                        }
                    }
                }
    
                if (!empty($messages)) {
                    $response->setContent(
                        \Zend\Json\Json::encode(
                            array('status' => 'error',
                                'messages' => (array) $messages,
                                'buildName' => $buildName,
                                'studEvalId' => $studEvalId
    
                            )));
    
                } else {
                    //save to db <span class="wp-smiley wp-emoji wp-emoji-wink" title=";)">;)</span>
                    $this->savetodb($form->getData(), $buildName);
                    $response->setContent(
                        \Zend\Json\Json::encode(
                            array(
                                'status' => 'success',
                                'messages' => 'Successfuly saved.',
                                'buildName' => $buildName,
                                'studEvalId' => $studEvalId
                            )
                        ));
                }
            }
    
            return $response;
        }
    
    echo“验证失败'$messageId':”; 打印($message); 回声';
        public function validatepostajaxAction()
        {
    
            $request = $this->getRequest();
            $response = $this->getResponse();
    
            $buildName = $this->params()->fromRoute('buildName', 'unknown');
    
            if ($buildName == 'unknown') {
                $buildName = $this->params()->fromPost('buildName', 'unknown');
    
                if ($buildName == 'unknown') {
                    trigger_error('Could not retrieve build name for ' . $buildName . ' entity for this form!');
                }
            }
    
            //extract parameter from dispatch command
            $studEvalId = (int)$this->params()->fromRoute('studEvalId', 0);
    
            if ($studEvalId == 0) {
                //extract parameter from the form submission
                $studEvalId = (int)$this->params()->fromPost('studEvalId', 0);
                if ($studEvalId == 0) {
    
                    return $this->notFoundAction();
                }
            }
    
            $data = $this->getEntity($buildName, $studEvalId);
            $objectManager = $this->getEntityManager();
    
            $formName = $buildName . "Form";
            $sl = $this->getServiceLocator();
            $form = $sl->get('FormElementManager')->get($formName);
    
            $form->setHydrator(new DoctrineHydrator($objectManager ));
            $entityName = 'OnlineFieldEvaluation\Entity\\' . $buildName;
            $form->setObject(new $entityName());
    
            $form->bind($data);
    
            //set class and Id for buttons like SaveChanges to reference it
            $form->setAttribute('class', "studentFormsClass_$studEvalId");
            $form->setAttribute('id', "studentFormsId_$studEvalId" . "_$buildName");
    
    
            //set buildName to the form
            $form->get('buildName')->setAttribute('value', $buildName);
    
            $messages = array();
            if ($request->isPost()) {
                $formValidatorName = "OnlineFieldEvaluation\Form\\" . $buildName . "FormValidator";
                $formValidator = new  $formValidatorName();
                $form->setInputFilter($formValidator->getInputFilter());
    
                $form->setData($request->getPost());
    
                if (!$form->isValid()) {
                    $errors = $form->getMessages();
                    foreach ($errors as $key => $row) {
    
                        if (!empty($row) && $key != 'submit') {
                            foreach ($row as $keyer => $rower) {
                                //save error(s) per-element that
                                //needed by Javascript
                                $messages[$key][] = $rower;
                            }
                        }
                    }
                }
    
                if (!empty($messages)) {
                    $response->setContent(
                        \Zend\Json\Json::encode(
                            array('status' => 'error',
                                'messages' => (array) $messages,
                                'buildName' => $buildName,
                                'studEvalId' => $studEvalId
    
                            )));
    
                } else {
                    //save to db <span class="wp-smiley wp-emoji wp-emoji-wink" title=";)">;)</span>
                    $this->savetodb($form->getData(), $buildName);
                    $response->setContent(
                        \Zend\Json\Json::encode(
                            array(
                                'status' => 'success',
                                'messages' => 'Successfuly saved.',
                                'buildName' => $buildName,
                                'studEvalId' => $studEvalId
                            )
                        ));
                }
            }
    
            return $response;
        }
    
    } } } $view=新的视图模型(阵列)( “studEvalId”=>$studEvalId, “buildName”=>$buildName, 'form'=>$form, )); $view->setTemplate('online-field-evaluation/tabs/edit'.$buildName.'.phtml'); 返回$view; }
    2) 这一个负责ajax调用:

    public function editTabAction()
    {
        $buildName = $this->params()->fromRoute('buildName', 'unknown');
    
        if ($buildName == 'unknown') {
            $buildName = $this->params()->fromPost('buildName', 'unknown');
    
            if ($buildName == 'unknown') {
                trigger_error('Could not retrieve build name for ' . $buildName . ' entity for this form!');
            }
        }
    
        //extract parameter from dispatch command
        $studEvalId = (int)$this->params()->fromRoute('studEvalId', 0);
    
        if ($studEvalId == 0) {
            //extract parameter from the form submission
            $studEvalId = (int)$this->params()->fromPost('studEvalId', 0);
            if ($studEvalId == 0) {
                return $this->notFoundAction();
            }
        }
    
        $data = $this->getEntity($buildName, $studEvalId);
    
        // Get your ObjectManager from the ServiceManager
        $objectManager = $this->getEntityManager();
    
    
        // get from from FormElementManager plugin
        //forms are defined in Module.php
        $formName = $buildName . "Form";
        $sl = $this->getServiceLocator();
        $form = $sl->get('FormElementManager')->get($formName);
    
        $form->setHydrator(new DoctrineHydrator($objectManager ));
        $form->setObject($this->getEntityInstanceFromBuildName($buildName));
    
        $form->bind($data);
    
        //set class and Id for buttons like SaveChanges to reference it
        $form->setAttribute('class', "studentFormsClass_$studEvalId");
        $form->setAttribute('id', "studentFormsId_$studEvalId" . "_$buildName");
    
    
        //set buildName to the form
        $form->get('buildName')->setAttribute('value', $buildName);
    
        $request = $this->getRequest();
        if ($request->isPost()) {
            $formValidatorName = "OnlineFieldEvaluation\Form\\" . $buildName . "FormValidator";
            $formValidator = new  $formValidatorName();
            $form->setInputFilter($formValidator->getInputFilter());
    
            $form->setData($request->getPost());
    
            if ($form->isValid()) {
                $this->savetodb($form->getData(), $buildName);
    
                // Redirect to list of forms
                return false;
            } else {
                foreach ($form->getMessages() as $messageId => $message) {
                    echo '<pre>';
                    echo "Validation failure '$messageId':";
                    print_r($message);
                    echo '</pre>';
                }
            }
        }
    
        $view = new ViewModel(array(
            'studEvalId' => $studEvalId,
            'buildName' => $buildName,
            'form' => $form,
        ));
        $view->setTemplate('online-field-evaluation/tabs/edit' . $buildName . '.phtml');
    
        return $view;
    }
    
    public function addAction()
    {
         $form = new YourAgencyForm();
    
         $form->get('agencyName')->setValue('Virtual Field Practicum');
         ....
    
    公共函数validatepostajaxAction()
    {
    $request=$this->getRequest();
    $response=$this->getResponse();
    $buildName=$this->params()->fromRoute('buildName','unknown');
    如果($buildName==“未知”){
    $buildName=$this->params()->fromPost('buildName','unknown');
    如果($buildName==“未知”){
    触发器_错误('无法检索此表单的“$buildName.”实体的生成名!');
    }
    }
    //从调度命令中提取参数
    $studEvalId=(int)$this->params()->fromRoute('studEvalId',0);
    如果($studEvalId==0){
    //从表单提交中提取参数
    $studEvalId=(int)$this->params()->fromPost('studEvalId',0);
    如果($studEvalId==0){
    返回$this->notFoundAction();
    }
    }
    $data=$this->getEntity($buildName,$studEvalId);
    $objectManager=$this->getEntityManager();
    $formName=$buildName.“Form”;
    $sl=$this->getServiceLocator();
    $form=$sl->get('FormElementManager')->get($formName);
    $form->setHydrator(新的DoctrineHydrator($objectManager));
    $entityName='OnlineFieldEvaluation\Entity\\'。$buildName;
    $form->setObject(新的$entityName());
    $form->bind($data);
    //为SaveChanges之类的按钮设置类和Id以引用它
    $form->setAttribute('class','studentFormsClass_u$studEvalId');
    $form->setAttribute('id',“studentFormsId_$studEvalId”。“$buildName”);
    //将buildName设置为表单
    $form->get('buildName')->setAttribute('value',$buildName);
    $messages=array();
    如果($request->isPost()){
    $formValidatorName=“OnlineFieldEvaluation\Form\\”$buildName。“FormValidator”;
    $formValidator=新的$formValidatorName();
    $form->setInputFilter($formValidator->getInputFilter());
    $form->setData($request->getPost());
    如果(!$form->isValid()){
    $errors=$form->getMessages();
    foreach($key=>$row的错误){
    如果(!empty($row)&&$key!='submit'){
    foreach($keyer=>$rower的行){
    //保存每个元素的错误
    //Javascript所需要的
    $messages[$key][]=$rower;
    }
    }
    }
    }
    如果(!空($messages)){
    $response->setContent(
    \Zend\Json\Json::encode(
    数组('状态'=>'错误',
    'messages'=>(数组)$messages,
    “buildName”=>$buildName,
    “studEvalId”=>$st