1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| <?php
namespace Elia\StickitBundle\Controller;
use Elia\StickitBundle\Entity\User;
use Elia\StickitBundle\Entity\Category;
use Elia\StickitBundle\Entity\Note;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Elia\StickitBundle\Repository\CategoryRepository;
class NoteController extends Controller
{
/**
* Matches /note/creer/* exactly
*
* @Route("/note/creer/{idCategory}", name="note_create", host="www.si.elia")
*/
public function createAction($idCategory = 0, Request $request)
{
$user = $this->get('security.token_storage')->getToken()->getUser();
if($this->container->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_REMEMBERED'))
{
$user_id = $user->getId();
$note = new Note();
$form = $this->createFormBuilder($note)
->add('titre', TextType::class)
->add('categories', EntityType::class, array(
'class' => 'EliaStickitBundle:Category',
'label' => 'Catégories',
'query_builder' => function(CategoryRepository $er) {
return $er->getCategories();
},
'expanded' => true,
'multiple' => true
))
->add('contenu', TextareaType::class)
->add('visible_par', ChoiceType::class, array(
'choices' => array(
'Moi uniquement' => 'private',
'Tout membre connecté' => 'shared',
'Tout le monde' => 'public',
)
))
->add('save', SubmitType::class, array('label' => 'Ajouter'))
->getForm();
// enregistrement du formulaire soumis
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
$note = $form->getData();
if(empty($idCategory))
{
$idCategory = $_POST['form']['categories'][0];
}
$user = $this->getDoctrine()
->getManager('stickit')
->getRepository('EliaStickitBundle:User')
->find($user_id);
// relate this note to the user
$note->setUser($user);
// position à 0 par défaut
$note->setPosition(0);
$em = $this->getDoctrine()->getManager('stickit');
// tells Doctrine you want to (eventually) save the note (no queries yet)
$em->persist($note);
// actually executes the queries (i.e. the INSERT query)
$em->flush();
return $this->redirect('/notes/'.$idCategory);
}
return $this->render('EliaStickitBundle:note:create.html.twig', array(
'form' => $form->createView(),
'titrePage' => 'Ajouter'
));
}
else
{
return $this->redirect('/connexion');
}
}
} |
Partager