/** * validate * * @param Data $data * * @return boolean */ protected function validate($data) { $form = new Form('blog'); $form->defineFormFields(new BlogDefinition()); $form->bind($data); if (!$form->validate()) { $errors = $form->getErrors(); foreach ($errors as $error) { $this->addFlash($error->getMessage(), 'danger'); } $this->setRedirect(Router::buildHttp('admin:blog', ['id' => $data->id ?: ''])); return false; } // Check exists $conditions['alias'] = $data['alias']; if ($data->id) { $conditions[] = 'id != ' . $data->id; } $blog = (new DataMapper('blogs'))->findOne($conditions); if ($blog->notNull()) { $this->setRedirect(Router::buildHttp('admin:blog', ['id' => $data->id ?: '']), 'Blog Name has already been used', 'danger'); return false; } return true; }