Я вступаю в Zend Framework и решил создать простое приложение для практики. Приложение, которое я создаю, представляет собой простой калькулятор, который позволяет пользователю добавлять, вычитать, умножать и делить два числа.Получить форму ввода из Zend Framework
У меня возникли проблемы с получением пользовательского ввода для расчета ответа. Когда я использую Zend_Debug::dump($this->getRequest()->getParams());
в методе IndexAction()
, он корректно отображает данные формы на странице, но как отправить данные в соответствующую модель для обработки?
Вот 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