Accéder au contenu principal

« Hello World ! » avec Symfony2

La route

Pour créer une page, il faut d'abord définir l'URL à laquelle elle sera accessible. Pour cela, il faut créer la route de cette page.
# src/OC/PlatformBundle/Resources/config/routing.yml

hello_the_world:
    path:     /hello-world
    defaults: { _controller: OCPlatformBundle:Advert:index }

  • hello_the_world est le nom de la route. Il est assez arbitraire, et vous permet juste de vous y retrouver par la suite. La seule contrainte est qu'il soit unique.
  • path correspond à l'URL à laquelle nous souhaitons que notre « Hello World ! » soit accessible. C'est ce qui permet à la route de dire : « Cette URL est pour moi, je prends. »
  • defaults correspond aux paramètres de la route, dont :
    • _controller, qui correspond à l'action (ici, « index ») que l'on veut exécuter et au contrôleur (ici, « Advert ») que l'on va appeler (un contrôleur peut contenir plusieurs actions, c'est-à-dire plusieurs pages).

      • « OCPlatformBundle » est le nom de notre bundle, celui dans lequel Symfony2 ira chercher le contrôleur.
      • « Advert » est le nom du contrôleur à ouvrir. En terme de fichier, cela correspond à Controller/AdvertController.php dans le répertoire du bundle. Dans notre cas, nous avons src/OC/PlatformBundle/Controller/AdvertController.php comme chemin absolu.
      • « index » est le nom de la méthode à exécuter au sein du contrôleur.

Créons notre contrôleur

On doit donc créer le fichier src/OC/PlatformBundle/Controller/AdvertController.php.

<?php
// src/OC/PlatformBundle/Controller/AdvertController.php
namespace OC\PlatformBundle\Controller;
use Symfony\Component\HttpFoundation\Response;
class AdvertController
{
    public function indexAction()
    {
        return new Response("Hello World !");
    }
}

Maintenant, essayons de comprendre rapidement ce fichier :
  • Ligne 5 : on se place dans le namespace des contrôleurs de notre bundle. Rien de bien compliqué, suivez la structure des répertoires dans lequel se trouve le contrôleur.
  • Ligne 7 : notre contrôleur va utiliser l'objet Response, il faut donc le définir grâce au use.
  • Ligne 9 : le nom de notre contrôleur respecte le nom du fichier pour que l'autoload fonctionne.
  • Ligne 11 : on définit la méthode indexAction(). N'oubliez pas de mettre le suffixe Action derrière le nom de la méthode.
  • Ligne 13 : on crée une réponse toute simple. L'argument de l'objet Response est le contenu de la page que vous envoyez au visiteur, ici « Hello World ! ». Puis on retourne cet objet.

    Les templates avec Twig

    Créons notre propre répertoire Advert et créons notre template index.html.twig

    {# src/OC/PlatformBundle/Resources/views/Advert/index.html.twig #}

    <!DOCTYPE html>
    <html>
        <head>
            <title>Bienvenue sur ma première page avec OpenClassrooms !</title>
        </head>
        <body>
            <h1>Hello World !</h1>
           
            <p>
                Le Hello World est un grand classique en programmation.
                Il signifie énormément, car cela veut dire que vous avez
                réussi à exécuter le programme pour accomplir une tâche simple :
                afficher ce hello world !
            </p>
        </body>
    </html> 

    Ensuite, la méthode concrête que nous utilisons pour récupérer le contenu d'un template est la méthode $this->get('templating')->render(). Cette méthode prend en paramètre le nom du template et retourne le contenu du template. Voici le contrôleur modifié en conséquence :
     
    <?php

    // src/OC/PlatformBundle/Controller/AdvertController.php

    namespace OC\PlatformBundle\Controller;

    // N'oubliez pas ce use :
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Response;

    class AdvertController extends Controller
    {
      public function indexAction()
      {
        $content = $this->get('templating')->render('OCPlatformBundle:Advert:index.html.twig');
        return new Response($content);
      }
    }

    Vous voulez vous amuser un peu avec les variables Twig ? Modifiez le contrôleur pour rajouter un deuxième argument à la méthode render(), un tableau contenant le nom des variables (ici, "nom") et leur valeur (ici, "younes") :

    <?php
    $content = $this
        ->get('templating')
        ->render('OCPlatformBundle:Advert:index.html.twig', array(
            'nom' => 'winzou'
        )
    );

    Puis, modifiez votre template en remplaçant la balise <h1> par la suivante :
    <h1>Hello {{ nom }} !</h1>


    Un peu de nettoyage

    Avec tous les éléments générés par Symfony2 et les nôtres, il y a un peu de redondance. Vous pouvez donc supprimer joyeusement :
  • Le contrôleur Controller/DefaultController.php ;
  • Les vues dans le répertoire Resources/views/Default ;
  • La route oc_platform_homepage dans Resources/config/routing.yml.
Ainsi que tout ce qui concerne le bundle AcmeDemoBundle, un bundle de démonstration intégré dans la distribution standard de Symfony2 et dont nous ne nous servirons pas. Supprimez donc :
  • Le répertoire src/Acme ;
  • La ligne 24 du fichier app/AppKernel.php, celle qui active le bundle AcmeDemoBundle ($bundles[] = new Acme\DemoBundle\AcmeDemoBundle()) ;
  • Les lignes 16 à 18 du le fichier app/config/routing_dev.yml, celles qui importent le fichier de route du bundle Acme (_acme_demo: resource: "@AcmeDemoBundle/Resources/config/routing.yml" )

     Le cache


    • En mode « prod », c'est simple, Symfony2 ne regénère jamais le cache. Cela lui permet de ne faire aucune vérification sur la validité du cache (ce qui prend du temps), et de servir les pages très rapidement à vos visiteurs. La solution : vider le cache à la main à chaque fois que vous faites des changements. Cela se fait grâce à la commande php app/console cache:clear --env=prod.
    • En mode « dev », c'est plus simple. Lorsque vous modifiez votre code, Symfony reconstruit une bonne partie du cache à la prochaine page que vous chargez. Donc pas forcément besoin de vider le cache. Seulement, comme il ne reconstruit pas tout, il peut parfois apparaître des bugs un peu étrange. Dans ce cas, un petit php app/console cache:clear résout le problème en trois secondes !

Commentaires

Posts les plus consultés de ce blog

cPanel DDOS attack - Mitigate Slowloris Attacks - mod_qos

Apache mod_evasive Mod_evasive is a module available for the Apache HTTP server that can automatically block attacks by rate-limiting any IP that sends too many requests in a short time. Start by installing the module from WHM’s  EasyApache 4  interface. Select the  Currently Installed Packages  profile, search for  mod_evasive  in the  Apache Modules  section, and then install it. The default settings are good for most servers, but you can tweak them further by editing the configuration file  /etc/apache2/conf.d/300-mod_evasive.conf . You can also whitelist specific IP addresses or classes, so legitimate requests are not blocked. Configure CSF to block attacks While  mod_evasive  works very well, it only protects the Apache webserver. In order to harden other services as well, you can install the free  ConfigServer Security & Firewall  (CSF), which also includes a WHM plugin. As the  root  user, install CSF with these terminal commands: cd /usr/src rm -fv csf.tgz wget https://down

Spool file is locked (another process is handling this message)

LOG: MAIN cwd=/usr/local/cpanel/whostmgr/docroot 4 args: /usr/sbin/exim -v -Mrm 1dUoey-0006YJ-3A Message 1dUoey-0006YJ-3A is locked LOG: skip_delivery MAIN Spool file is locked (another process is handling this message) To do this you can run the following commands. |exim -Mt 1dUoey-0006YJ-3A |exim -Mrm 1dUoey-0006YJ-3A I am also providing the following page in case you want more information regarding the exim command options. http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command_line.html

Open Media Vault NAS change password

Known Root Password Login to the OMV using the root user and the current password via SSH or Console enter the following command passwd root The new password is now active. Unknown Root Password, but Admin Access to OMV GUI is Available In this scenario we still can help ourselves with the GUI. The method we use is, that we create a cron job for the root user which then resets the password. Navigate to System -> Cron Jobs Press the +Add button UN-tick the enabled box, so that the cronjob does not run automatically. put into the command field the following line, replace newpasswd with your password: echo "root:newpasswd" | chpasswd press okay select the newly created cron job Click the run button. in the opening window click the start button. It will shortly deactivate and activate again. open ssh or console and login as root with your new password. Root and Admin Password Unknown If you do not know the root password, you need to boot with a Li