From 522beb2a2bc734dcc90fe79fd283b96216e514e8 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Sat, 28 Nov 2015 09:05:33 +0100 Subject: [PATCH] base --- .gitignore | 11 ++++ src/.htaccess | 7 +++ src/AppBundle/AppBundle.php | 11 ++++ .../Controller/DefaultController.php | 42 +++++++++++++++ .../DependencyInjection/AppExtension.php | 18 +++++++ src/AppBundle/Model/Cart.php | 53 +++++++++++++++++++ src/AppBundle/Resources/config/services.xml | 17 ++++++ .../Resources/views/Default/cart.html.twig | 20 +++++++ .../Resources/views/Default/index.html.twig | 30 +++++++++++ .../Controller/DefaultControllerTest.php | 18 +++++++ 10 files changed, 227 insertions(+) create mode 100644 .gitignore create mode 100644 src/.htaccess create mode 100644 src/AppBundle/AppBundle.php create mode 100644 src/AppBundle/Controller/DefaultController.php create mode 100644 src/AppBundle/DependencyInjection/AppExtension.php create mode 100644 src/AppBundle/Model/Cart.php create mode 100644 src/AppBundle/Resources/config/services.xml create mode 100644 src/AppBundle/Resources/views/Default/cart.html.twig create mode 100644 src/AppBundle/Resources/views/Default/index.html.twig create mode 100644 src/AppBundle/Tests/Controller/DefaultControllerTest.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c279389 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +/app/bootstrap.php.cache +/app/cache/* +!app/cache/.gitkeep +/app/config/parameters.yml +/app/logs/* +!app/logs/.gitkeep +/app/phpunit.xml +/bin/ +/composer.phar +/vendor/ +/web/bundles/ diff --git a/src/.htaccess b/src/.htaccess new file mode 100644 index 0000000..fb1de45 --- /dev/null +++ b/src/.htaccess @@ -0,0 +1,7 @@ + + Require all denied + + + Order deny,allow + Deny from all + diff --git a/src/AppBundle/AppBundle.php b/src/AppBundle/AppBundle.php new file mode 100644 index 0000000..3bd6b50 --- /dev/null +++ b/src/AppBundle/AppBundle.php @@ -0,0 +1,11 @@ +get('cart') + ->addPrestation($id) + ->update(); + + return new RedirectResponse($this->generateUrl('homepage')); + } + + /** + * @Route("/cart", name="cart") + * @Template() + */ + public function cartAction(Request $request) + { + return ['cart' => $this->get('cart')]; + } +} diff --git a/src/AppBundle/DependencyInjection/AppExtension.php b/src/AppBundle/DependencyInjection/AppExtension.php new file mode 100644 index 0000000..58dd193 --- /dev/null +++ b/src/AppBundle/DependencyInjection/AppExtension.php @@ -0,0 +1,18 @@ +load('services.xml'); + } +} diff --git a/src/AppBundle/Model/Cart.php b/src/AppBundle/Model/Cart.php new file mode 100644 index 0000000..2d9af60 --- /dev/null +++ b/src/AppBundle/Model/Cart.php @@ -0,0 +1,53 @@ + + */ +class Cart +{ + protected $prestations = []; + + protected $session; + + public function __construct(Session $session) + { + $this->session = $session; + + $sessionCart = $this->session->get('cart'); + + if ($sessionCart !== null) { + $this->setPrestations($sessionCart->getPrestations()); + } + } + + public function addPrestation($id) + { + if (!in_array($id, $this->prestations)) { + $this->prestations[] = $id; + } + + return $this; + } + + public function getPrestations() + { + return $this->prestations; + } + + public function setPrestations(array $prestations) + { + $this->prestations = $prestations; + + return $this; + } + + public function update() + { + $this->session->set('cart', $this); + } +} diff --git a/src/AppBundle/Resources/config/services.xml b/src/AppBundle/Resources/config/services.xml new file mode 100644 index 0000000..96c1384 --- /dev/null +++ b/src/AppBundle/Resources/config/services.xml @@ -0,0 +1,17 @@ + + + + + + AppBundle\Model\Cart + + + + + + + + + diff --git a/src/AppBundle/Resources/views/Default/cart.html.twig b/src/AppBundle/Resources/views/Default/cart.html.twig new file mode 100644 index 0000000..cd98529 --- /dev/null +++ b/src/AppBundle/Resources/views/Default/cart.html.twig @@ -0,0 +1,20 @@ + + + + + + + + + +

+ Accueil +

+ + diff --git a/src/AppBundle/Resources/views/Default/index.html.twig b/src/AppBundle/Resources/views/Default/index.html.twig new file mode 100644 index 0000000..b7e9f08 --- /dev/null +++ b/src/AppBundle/Resources/views/Default/index.html.twig @@ -0,0 +1,30 @@ + + + + + + + + + +

+ Afficher le panier +

+ + diff --git a/src/AppBundle/Tests/Controller/DefaultControllerTest.php b/src/AppBundle/Tests/Controller/DefaultControllerTest.php new file mode 100644 index 0000000..87989da --- /dev/null +++ b/src/AppBundle/Tests/Controller/DefaultControllerTest.php @@ -0,0 +1,18 @@ +request('GET', '/'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + $this->assertContains('Welcome to Symfony', $crawler->filter('#container h1')->text()); + } +}