我正在冒險進入Zend框架,並決定構建一個簡單的應用程序來練習。我正在構建的應用程序是一個簡單的計算器,允許用戶添加,減去,乘以和除以兩個數字。從Zend框架獲取表單輸入
我無法檢索用戶輸入算出答案。當我在IndexAction()
方法中使用Zend_Debug::dump($this->getRequest()->getParams());
時,它會在頁面上正確顯示錶單數據,但是如何將數據發送到適當的模型進行處理?
這裏是IndexController.php
文件:
<?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 to form
$form->addElement($num1)
->addElement($op)
->addElement($num2)
->addElement('submit', 'equal', array('label' => '='));
return $form;
}
public function indexAction()
{
//render the 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();
}
}
}
}
我試着放置calcAction()
腳本到indexAction()
方法,但隨後的頁面不呈現在所有。我怎樣才能讓用戶輸入到Calculator_Model
進行處理?
'$ calculator = new Calculator_Model'應該是'$ calculator = new Calculator_Model()' –
糟糕!感謝您指出了這一點! –
如果你只是冒險進入Zend框架,我會建議看看他們的2.0版本https://github.com/zendframework/zf2 – aporat