renderer = $renderer; $this->regionTable = $regionTable; $this->antenneTable = $antenneTable; $this->flashService = $flash; } public function delete(Request $request) { $antenne = $this->antenneTable->find($request->getAttribute('id')); // $this->postUpload->delete($post->image); return parent::delete($request); } protected function formParams(array $params): array { return $params; } protected function getNewEntity() { $antenne = new Antenne(); $antenne->created_at = new \DateTime(); return $antenne; } /** * @param Request $request * @param Antenne $antenne * @return array */ protected function prePersist(Request $request, $antenne): array { $params = $request->getParsedBody(); $params = array_filter($params, function ($key) { return in_array($key, ['region_id', 'name', 'slug', 'created_at', 'listeRegions']); }, ARRAY_FILTER_USE_KEY); return array_merge($params, ['test' => $test, 'updated_at' => date('Y-m-d H:i:s')]); } protected function getValidator(Request $request) { $validator = parent::getValidator($request) ->required('region_id', 'name', 'slug', 'created_at') ->length('name', 2, 250) ->dateTime('created_at') ->slug('slug'); /*if (is_null($request->getAttribute('id'))) { $validator->uploaded('image'); }*/ return $validator; } public function __invoke(Request $request) { if ($request->getMethod() === 'POST') { $params = $request->getParsedBody(); $date = $params['datepicker']; $time = '00:00:00'; $date_us = substr($date,6,4).'-'.substr($date,3,2).'-'.substr($date,0,2); $date_us .= ' '.$time; $madate = date("Y-m-d H:i:s", strtotime($date_us)); $text = $params['antenne']; // replace non letter or digits by - $text = preg_replace('~[^\pL\d]+~u', '-', $text); // transliterate $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); // remove unwanted characters $text = preg_replace('~[^-\w]+~', '', $text); // trim $text = trim($text, '-'); // remove duplicate - $text = preg_replace('~-+~', '-', $text); // lowercase $slug = strtolower($text); $admin = ''; $content = ''; $image = ''; $created_at = date("Y-m-d H:i:s"); $validator = (new Validator($params)) ->required('antenne', 'region'); if ($validator->isValid()) { $antenneParams = [ 'id' => $antenne_id, 'name' => $params['antenne'], 'slug' => $slug, 'admin' => $admin, 'content' => $content, 'image' => $image, 'created_at' => $created_at, 'region_id' => $params['region'], 'gmarcheAt' => $madate, 'edito1' => $params['contenu1'], 'edito2' => $params['contenu2'], 'edito3' => $params['contenu3'], 'edito4' => $params['contenu4'] ]; $this->antenneTable->insert($antenneParams); $this->flashService->success("L'antenne ".$params['antenne']." a bien été créée."); return new RedirectResponse($request->getUri()->getPath()); } } //$errors = $validator->getErrors(); $listeRegions = $this->regionTable->findAll(); $role = $_SESSION['role']; return $this->renderer->render('@antenne/create', compact('listeRegions','role')); } }