public function editAction() { $record = null; $id = $this->_request->getParam('id'); $this->view->id = $id; if (!empty($id)) { $record = My_Model::get('Tests')->getById($id); } $form = new TestForm(); $form->setAction($this->_helper->url->url()); if ($record === null) { $this->view->title = 'Add Test'; } else { $this->view->title = 'Edit Test: ' . $record->getName() . ' [' . $record->getId() . ']'; $form->setModifyMode(); } if ($this->_request->isPost()) { if ($form->isValid($this->_request->getPost())) { $formValues = $form->getValues(); if ($record === null) { $record = My_Model::get('Tests')->createRow(); $record->updateFromArray($formValues, true); } else { $record->updateFromArray($formValues, false); } $this->_helper->flashMessenger->setNamespace("success")->addMessage("Your changes have been saved!"); $this->_helper->redirector->gotoUrl('/test/'); } } else { if ($record !== null) { $form->populate($record->toArray()); } } $this->view->form = $form; }
/** * @dataProvider invalidDataProvider */ public function testHandleRequestWithExistingEntityAndInvalidData($data) { $initialName = 'Initial namn'; $this->entity->setId(1)->setName($initialName); $this->request->setData($data); $this->form->handleRequest($this->request); $this->assertFalse($this->form->isValid()); $this->assertEquals($this->entity->getName(), $initialName); }
public function indexAction() { $form = new TestForm(); $form->setMethod('post')->setLegend('Legend form')->setDescription('My super hyper genial form description')->setAction($this->_helper->url('index', 'test', 'admin')); if ($this->getRequest()->isPost()) { $posts = $this->getRequest()->getPost(); if ($form->isValid($posts)) { } else { $form->populate($posts); } } $this->view->form = $form; }
public function editAction() { $this->view->messages = $this->_helper->flashMessenger->getMessages(); $testId = $this->_request->getParam('id'); // Creates form instance $testFrom = new TestForm(); $this->view->testForm = $testFrom; // Loads data from database $technologies = My_Model::get('Technologies')->fetchAll(); $seniorities = My_Model::get('Seniorities')->fetchAll(); // Fills form selects $testFrom->getElement('id_technologie')->setMultiOptions($this->transformTechnologies($technologies)); $testFrom->getElement('id_seniorita')->setMultiOptions($this->transformSeniorities($seniorities)); // Edit test page if (!empty($testId)) { $this->view->testId = $testId; $this->view->title = 'Edit Test'; $test = My_Model::get('Tests')->getById($testId); $testData = $test->get_data(); $testFrom->setDefaults($testData); // Loads questions with options $questions = $test->getQuestions(); $questionForms = array(); foreach ($questions as $q) { $questionForm = new QuestionForm(array('questionId' => $q->getid_otazka())); $questionForm->setName('q' . strval($q->getid_otazka())); $questionForm->setAction($this->view->url(array('controller' => 'test', 'action' => 'save-question', 'testId' => $testId, 'questionId' => $q->getid_otazka()), 'default', true)); $questionForms[] = $questionForm; } $newQuestionForm = new QuestionForm(array('count' => 3)); $newQuestionForm->setName('new'); $newQuestionForm->setAction($this->view->url(array('controller' => 'test', 'action' => 'save-question', 'testId' => $testId), 'default', true)); $questionForms[] = $newQuestionForm; $this->view->questionForms = $questionForms; } else { $this->view->title = 'Add new Test'; } // ########################### POST ########################### // Handles form submission if ($this->_request->isPost()) { if ($testFrom->isValid($this->_request->getPost())) { $formValues = $testFrom->getValues(); $test; // Editing existing test if (!empty($testId)) { $test = My_Model::get('Tests')->getById($testId); } else { date_default_timezone_set('UTC'); $formValues['datum_vytvoreni'] = date("Y-n-j"); $formValues['id_kdo_vytvoril'] = $this->getUser()->id_uzivatel; $test = My_Model::get('Tests')->createRow(); } // Updates test object in DB $test->updateFromArray($formValues); $this->_helper->redirector->gotoRoute(array('controller' => 'test', 'action' => 'edit', 'id' => $test->id_test), 'default', true); } } }