public function actionCreate() { $page = new Page(); // I need some form of post checking if (Input::post('page.title', false)) { try { $success = false; $page->site_id = (int) Input::post('page.site_id'); $page->layout_id = Input::post('page.layout_id'); $page->title = Input::post('page.title'); $page->subtitle = Input::post('page.subtitle'); $page->description = Input::post('page.description'); $page->status = Input::post('page.status'); $page->priority = Input::post('page.priority'); $page->change_frequency = Input::post('page.change_frequency'); $uri = Input::post('page.uri'); if (strpos($uri, '@@') !== false) { $page->errors['uri'][] = 'You may not add your own special "@@" pages, only the system may do that.'; } else { $page->uri = $uri; } // If there are validation errors, fail. if ($page->hasErrors()) { throw new \OutOfBoundsException(''); } // Attempt database write. list($success, $count) = $page->insert(); // If database wrote and actually added a record. if ($success and $count > 0) { $this->flash->set('success', "Successfully added {$page->title}."); $this->application->redirect(Url::site('/pages')); } else { $this->flash->set('error', "Unable to save <em>{$page->title}</em>."); } } catch (\Nerd\DB\Exception $e) { $this->flash->set('error', 'There was a database error…'); } catch (\OutOfBoundsException $e) { $form = $page->form($this->form())->action("/pages/create"); foreach ($page->errors as $field => $errors) { $form->findByAttribute('id', "page_{$field}")->wrap('<div class="control-group error">', '</div>'); } $this->flash->set('error', $page->errors); } } if (!isset($form)) { $form = $page->form($this->form())->action(Url::site('/pages/create')); } $form->container('div', new Reset(['class' => 'btn btn-danger']), new Submit(['class' => 'btn btn-primary']))->class('form-actions'); return $this->template->partial('content', 'pages/new', ['form' => $form, 'page' => $page]); }