示例#1
0
 /**
  * Добавление/обновление вакансии
  * @return void
  */
 public function editAction()
 {
     if ($this->_authorize('vacancies', 'edit')) {
         $form = new Form_Vacancy_Edit();
         // выбираем из базы данные о редактируемой вакансии
         $objTest = new Tests();
         $tests = $objTest->fetchAll()->toArray();
         $objVT = new VacanciesTest();
         //Добавляет тесты на форму
         $form->addElementsForm($tests);
         if ($this->getRequest()->isPost()) {
             if ($form->isValid($_POST)) {
                 // Выполняем update (insert/update данных о вакансии)
                 $objVacancies = new Vacancies();
                 $vacancyId = $form->vacancyId->getValue();
                 $objVacancy = $objVacancies->getObjectById($vacancyId);
                 if (!$objVacancy instanceof Vacancy) {
                     $objVacancy = $objVacancies->createRow();
                 }
                 $objVacancy->name = $form->Name->getValue();
                 $objVacancy->num = $form->Num->getValue();
                 $objVacancy->duties = $form->Duties->getValue();
                 $objVacancy->requirements = $form->Requirements->getValue();
                 $idSaveVacancy = $objVacancy->save();
                 $test = $this->keyReplace($form->getValues(), 'test_');
                 $objVT->delete('vacancy_id = ' . $idSaveVacancy);
                 foreach ($test as $testId => $val) {
                     if ($val) {
                         $newRow = $objVT->createRow(array('vacancy_id' => $idSaveVacancy, 'test_id' => $testId));
                         $newRow->save();
                     }
                 }
                 $this->_helper->redirector('index', 'vacancy');
             }
         } else {
             $vacancyId = (int) $this->getRequest()->getParam('vacancyId');
             if ($vacancyId != '') {
                 // выбираем из базы данные о редактируемой вакансии
                 $vacancies = new Vacancies();
                 $objVacancy = $vacancies->getObjectById($vacancyId);
                 if ($objVacancy instanceof Vacancy) {
                     $this->view->objVacancy = $objVacancy;
                     $form->populate(array('Name' => $objVacancy->name, 'Num' => $objVacancy->num, 'Duties' => $objVacancy->duties, 'Requirements' => $objVacancy->requirements, 'vacancyId' => $objVacancy->id));
                 }
                 $testIds = $objVT->getTestIds($vacancyId);
                 // отмечаем выбранные тесты
                 foreach ($testIds as $id) {
                     $form->populate(array('test_' . $id => 1));
                 }
             }
         }
         $this->view->objVacancyEditForm = $form;
     }
 }