php - Get Form Input from Zend Framework -


i venturing zend framework , decided build simple application practice with. app building simple calculator allows user add, subtract, multiply , divide 2 numbers.

i having trouble retrieving user input calculate answer. when use zend_debug::dump($this->getrequest()->getparams()); in indexaction() method displays form data correctly on page, how send data proper model processing?

here indexcontroller.php file:

<?php  class indexcontroller extends zend_controller_action {      //initialize calculator form on controller call     public function init()     {          //istantiate zend_form object         $form = new zend_form();         $form->setaction('')              ->setmethod('post');           //first number input         $num1 = $form->createelement('text', 'num1');         $num1->addvalidator('digits')              ->setrequired(true)              ->setattrib('placeholder', 'enter first number');          //second number input             $num2 = $form->createelement('text', 'num2');         $num2->addvalidator('digits')              ->setrequired(true)              ->setattrib('placeholder', 'enter second number');          //math operator select box         $op = $form->createelement('select', 'operator');         $op->setrequired(true)               ->setmultioptions(array('1'=>'+', '2'=>'-', '3'=>'x', '4'=>'/'))               ->setrequired(true);          //add elements form         $form->addelement($num1)              ->addelement($op)                         ->addelement($num2)              ->addelement('submit', 'equal', array('label' => '='));          return $form;     }      public function indexaction()     {         //render form view         $this->view->form = $this->init();         $this->render('index');      }       public function calcaction()     {          $form = $this->form;         $data = $this->getrequest()->getparams();          if ($data->ispost()) {              if($data->isvalid()) {                  $calculator = new calculator_model;                  switch($data['operator']) {                     case $data['operator'] === '1':                        $ans = $calculator->addnums($data['num1'], $data['num2']);                        return $ans;                        break;                     case $data['operator'] === '2':                         $ans = $calculator->subtractnums($data['num1'], $data['num2']);                         return $ans;                         break;                     case $data['operator'] === '3':                         $ans = $calculator->multiplynums($data['num1'], $data['num2']);                         return $ans;                         break;                     case $data['operator'] === '4':                         $ans = $calculator->dividenums($data['num1'], $data['num2']);                         return $ans;                         break;                 }              } else {                 return $form->getmessages();             }         }      }  } 

i tried placing calcaction() script indexaction() method page doesn't render @ all. how can user input calculator_model processing?

i guess doing of things right think should not programing in controller. controller not passing data model, trying figure out function call.

that should have been done model. problem simple , can solution, not scalable. consider wish add operation, have create it's function in model , add case in controller well.

what is

check if form valid : $form->isvalid()

instantiate model : $cal = new model()

pass data model : $calc->process($form->getvalues())

the process() public method in model. switch case statement go method , call appropriate protected method. let model decide options operator element in form $op->setmultioptions(model::$availableoperations) way can update model whenever need add operation.

i hope makes sense someone. :)


Comments

Popular posts from this blog

node.js - Bad Request - node js ajax post -

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -