<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Method;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Routing\Annotation\Security;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\ORM\EntityManagerInterface;
use App\Entity\Pictures;
use App\Entity\Parameters;
use App\Form\ParametersType;
use App\Repository\ParametersRepository;
use OlaSoft\Common;
use Symfony\Component\Yaml\Yaml;
/**
* @Route("/os-admin/parameters")
*/
class ParametersController extends AbstractController
{
/**
* @Route("/", name="parameters")
*/
public function edit(Request $request)
{
$paramsFile = "../config/packages/olasoft.yaml";
$values = Yaml::parseFile($paramsFile)["parameters"];
$params = [];
foreach ($values as $key => $value) {
if(is_array($value))
foreach($value as $k => $v)
$params[$key."_".$k] = $v;
else
$params[$key] = $value;
}
$form = $this->createForm(ParametersType::class, $params);
$form->remove("_token");
$form->handleRequest($request);
if ($form->isSubmitted()){
$params = [];
foreach ($form->getData() as $key => $data) {
if(is_object($data) && method_exists($data, "persistFile"))
$data->persistFile();
if(strpos($key,'_')){
[$prefix, $prop] = explode("_", $key);
$params[$prefix][$prop] = (string) $data;
}
else
$params[$key] = (string) $data;
}
file_put_contents($paramsFile,Yaml::dump(['parameters' => $params]));
$this->addFlash("notice","Enregistrement des paramètres effectué avec succès.");
return $this->redirectToRoute('parameters');
}
$ajax = $request->isXmlHttpRequest();
$response = $this->render('Admin\edit.html.twig',[
'ajax'=>$ajax,
'form'=>$form->createView(),
"title"=> "Édition des paramètres",
]);
return $ajax ?
new Response(\json_encode([
'content'=>$response->getContent(),
"title"=> "Édition des paramètres",
]))
: $response;
}
}