zend framework2 - Default for text element in zf2 forms -
how can setup default text element in zf2 forms?
i tried following:
in view file. not data, , not saved:
if($form->get('agencyname')->getvalue() === '') $form->get('agencyname')->setvalue('virtual field practicum');this affects neither view, nor db:
$this->add(array( 'name' => 'agencyname', 'options' => array( 'label' => 'agency name', ), 'attributes' => array( 'disabled' => 'disabled', 'value' => 'virtual field practicum', ) ));i tried modify entity in 2 ways, did not affect anything:
public function __construct() { //set default agency name $this->agencyname = 'virtual field practicum'; }
or:
public function setagencyname($agencyname) { if ($agencyname === '') $this->agencyname = 'virtual field practicum'; else $this->agencyname = $agencyname; return $this; } edit 1 adding generic actions post:
1) 1 responsible load forms, , process non-ajax calls:
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 ' . $buildname . ' entity form!'); } } //extract parameter dispatch command $studevalid = (int)$this->params()->fromroute('studevalid', 0); if ($studevalid == 0) { //extract parameter form submission $studevalid = (int)$this->params()->frompost('studevalid', 0); if ($studevalid == 0) { return $this->notfoundaction(); } } $data = $this->getentity($buildname, $studevalid); // objectmanager servicemanager $objectmanager = $this->getentitymanager(); // from formelementmanager plugin //forms 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 , id buttons savechanges reference $form->setattribute('class', "studentformsclass_$studevalid"); $form->setattribute('id', "studentformsid_$studevalid" . "_$buildname"); //set buildname 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 list of forms return false; } else { foreach ($form->getmessages() $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; } 2) 1 responsible ajax calls:
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 ' . $buildname . ' entity form!'); } } //extract parameter dispatch command $studevalid = (int)$this->params()->fromroute('studevalid', 0); if ($studevalid == 0) { //extract parameter 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 , id buttons savechanges reference $form->setattribute('class', "studentformsclass_$studevalid"); $form->setattribute('id', "studentformsid_$studevalid" . "_$buildname"); //set buildname 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 $key => $row) { if (!empty($row) && $key != 'submit') { foreach ($row $keyer => $rower) { //save error(s) per-element //needed 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 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; }
to setup default value element, following:
open controller's action, renders desired view
instantiate form, element name , call
setvalue()on that
that looks following:
public function addaction() { $form = new youragencyform(); $form->get('agencyname')->setvalue('virtual field practicum'); .... it's simple
Comments
Post a Comment