HtmlToText
mon projet symfony2 ce projet est propulsé par symfony2, et construit grâce au tutoriel du siteduzero. lire le tutoriel » le blog accueil du blog le livre découvrez le livre symfony2 lire le code source du blog les derniers articles construire un menu avec du contenu en base de données avec knpmenubundle symfony2 avec oracle database sous ubuntu ouverture du blog à d'autres contributeurs identification se souvenir de moi connexion blog liste des articles construire un menu avec du contenu en base de données avec knpmenubundle le 26/09/2013 , par vinorcola . knpmenubundle est un bundle qui permet de gérer assez facilement les menus d'un site web. faire un menu statique est très simple et expliqué clairement dans la documentation . mais parfois, le développeur a besoin de construire un menu (ou un sous-menu) en fonction de contenus en base de données. ce billet va donc vous expliquer comment faire cela. le contexte nous allons prendre un exemple simple pour illustrer ce billet : j'ai une entité produit avec les attributs nom et categorie , et une entité categorie avec les attributs nom et produits . chaque produit est relié à une catégorie. notre objectif est de construire un menu qui liste les catégories, et envoie l'utilisateur vers une page listant les produits de la catégorie sélectionnée. nous partons du principe que nous avons déjà un contrôleur qui s'occupe de lister les produits d'une catégorie. sa route s'appelle liste_produits_categorie et elle attend un paramètre id , qui est l'identifiant de la catégorie. création de la classe builder pour construire notre menu, il nous faut une classe builder. voici donc notre classe builder par défaut : use knp\menu\factoryinterface; class builder { public function createmainmenu(factoryinterface $factory, array $option) { $menu = $factory->createitem('root'); $menu->addchild( 'categorie', array('label' => 'nos produits par catégories') ); // d'autres menus ensuite... return $menu; } } notre objectif maintenant est de pouvoir utiliser le service doctrine pour pouvoir faire une requête dans notre classe builder. pour cela, il va donc falloir transformer notre builder en service. ça tombe bien, la procédure est décrite dans la documentation (et en plus, l'utilisation des menus en sera aussi simplifiée). convertir notre classe builder en service symfony2 premièrement, la documentation nous indique qu'il va falloir récupérer l'objet implémentant factoryinterface dans le constructeur car ce dernier ne sera plus passé en argument auprès de notre fonction createmainmenu() . dans notre cas, nous allons nous aussi avoir besoin d'un autre service : l'entity manager de doctrine. transformons donc notre classe ainsi : use knp\menu\factoryinterface; use doctrine\orm\entitymanager; class builder { private $factory; private $em; public function __construct(factoryinterface $factory, entitymanager $em) { $this->factory = $factory; $this->em = $em; } public function createmainmenu() { $menu = $this->factory->createitem('root'); $menu->addchild( 'categorie', array('label' => 'nos produits par catégories') ); // d'autres menus ensuite... return $menu; } } déclarer les services dans la configuration de l'application il nous faut maintenant déclarer nos services auprès de symfony2. cela se fait dans le fichier services.yml de votre bundle, ou bien directement dans le fichier app/config/config.yml . services: acme_main.menu_builder: class: acme\mainbundle\menu\builder arguments: ['@knp_menu.factory', '@doctrine.orm.entity_manager'] acme_main.menu.main: class: knp\menu\menuitem factory_service: acme_main.menu_builder factory_method: createmainmenu tags: - { name: knp_menu.menu, alias: main } on voit bien ici que notre builder attend deux paramètres : le service factory de knpmenu ainsi que le service entitymanager de doctrine. notre builder est donc déclaré en tant que service. le deuxième service concerne le menu principal. en effet, on le déclare aussi comme service pour faciliter son utilisation dans les vues. ce service fait appel à notre service builder, et on précise la fonction appelée : createmainmenu . de cette manière, vous pouvez créer plusieurs menus au sein de votre classe builder. il vous suffit de déclarer deux services menu, puis d'indiquer la bonne fonction pour l'option factory_method . voilà, tout est prêt maintenant pour construire notre menu en extrayant les informations de la base de données. construction du menu pour cela, rien de plus simple : nous avons l'entitymanager à notre disposition. use knp\menu\factoryinterface; use doctrine\orm\entitymanager; class builder { private $factory; private $em; public function __construct(factoryinterface $factory, entitymanager $em) { $this->factory = $factory; $this->em = $em; } public function createmainmenu() { $menu = $this->factory->createitem('root'); $menu->addchild( 'categorie', array('label' => 'nos produits par catégories') ); // récupération de la liste des catégories. $listecategories = $this->em->getrepository('acmemainbundle:categorie')->find(); // création des sous-menus. foreach ($listecategories as $categorie) { $menu['categorie']->addchild( 'categorie_' . $categorie->getid(), // identifiant du menu. array( 'label' => $categorie->getnom(); 'route' => 'liste_produits_categorie' 'routeparameters' => array('id' => $categorie->getid()), ) ); } // d'autres menus ensuite... return $menu; } } et voilà donc notre menu construit avec toutes les catégories présentes en base de données. pour l'utiliser dans vos vues, il suffit simplement d'ajouter : {{ knp_menu_render('main') }} à noter que main représente l'alias que nous avons donné à notre menu dans la configuration des services. catégories : blog symfony2 avec oracle database sous ubuntu le 29/08/2013 , par vinorcola . utiliser symfony2 avec oracle database est un parcours assez peu documenté. ce billet de blog tente donc de vous accompagner dans la configuration de symfony2 pour utiliser oracle database. attention, ce billet ne vous indique pas comment installer le serveur oracle ! nous partons du principe ici que le serveur de base de données existe déjà. on cherche juste à configurer symfony2 pour se connecter à ce serveur, sous ubuntu. tout d'abord, il va falloir utiliser le module php oci8, qui n'est pas présent par défaut sous ubuntu. compilation du module oci8 pour php il va nous falloir télécharger et installer plusieurs outils pour compiler ce module. executez les commandes suivantes : sudo apt-get install build-essential sudo apt-get install php5-dev php-pear libaio1 ensuite, il va nous falloir rajouter des variables d'environnement nécessaire pour l'installation de l'instantclient. pour cela, il faut éditer le fichier /etc/environment et ajouter les lignes suivantes : ld_library_path="/usr/local/lib/instantclient_11_2" tns_admin="/usr/local/lib/instantclient_11_2" oracle_base="/usr/local/lib/instantclient_11_2" oracle_home=$oracle_base ensuite, téléchargez le package basic (le premier dans la liste) et le package sdk (le 5ème). a noter qu'il vous faut un compte sur le site d'oracle pour pouvoir télécharger les fichiers. une fois téléchargé, retour sur la console, et saisissez les commandes suivantes : cd /usr/local/lib sudo unzip /chemin/vers/l/archive/instant-client-basic sudo unzip /chemin/vers/l/archive/instant-client-sdk cd instantclient_11_2 sudo ln -s libclntsh.so.11.1 libclntsh.so sudo pecl install oci8 pendant la compilation, on vous demandera le chemin vers la bibliothèque instantclient. répondez juste : instantclient,/usr/local/lib/instantclient_11_2 le module est maintenant compilé. activer le module dans php pour cela, rien de plus simple : il suffit de créer un fichier oci8.ini dans le répertoire /etc/php5/conf.d et d'ajouter le contenu suivant : extension=oci8.so et bien sûr, n'oubliez pas de redémarrer le serveur apache : sudo service apache2 restart configuration de symfony2 ouvrez le fichier de confi
Informations Whois
Whois est un protocole qui permet d'accéder aux informations d'enregistrement.Vous pouvez atteindre quand le site Web a été enregistré, quand il va expirer, quelles sont les coordonnées du site avec les informations suivantes. En un mot, il comprend ces informations;
%%
%% This is the AFNIC Whois server.
%%
%% complete date format : DD/MM/YYYY
%% short date format : DD/MM
%% version : FRNIC-2.5
%%
%% Rights restricted by copyright.
%% See https://www.afnic.fr/en/products-and-services/services/whois/whois-special-notice/
%%
%% Use '-h' option to obtain more information about this service.
%%
%% [2600:3c03:0000:0000:f03c:91ff:feae:779d REQUEST] >> tutoriel-symfony2.fr
%%
%% RL Net [##########] - RL IP [######....]
%%
domain: tutoriel-symfony2.fr
status: ACTIVE
hold: NO
holder-c: ANO00-FRNIC
admin-c: OVH5-FRNIC
tech-c: OVH5-FRNIC
zone-c: NFC1-FRNIC
nsl-id: NSL64684-FRNIC
registrar: OVH
Expiry Date: 18/07/2017
created: 18/07/2012
last-update: 18/07/2016
source: FRNIC
ns-list: NSL64684-FRNIC
nserver: dns102.ovh.net
nserver: ns102.ovh.net
source: FRNIC
registrar: OVH
type: Isp Option 1
address: 2 Rue Kellermann
address: ROUBAIX
country: FR
phone: +33 8 99 70 17 61
fax-no: +33 3 20 20 09 58
e-mail: support@ovh.net
website: http://www.ovh.com
anonymous: NO
registered: 21/10/1999
source: FRNIC
nic-hdl: ANO00-FRNIC
type: PERSON
contact: Ano Nymous
remarks: -------------- WARNING --------------
remarks: While the registrar knows him/her,
remarks: this person chose to restrict access
remarks: to his/her personal data. So PLEASE,
remarks: don't send emails to Ano Nymous. This
remarks: address is bogus and there is no hope
remarks: of a reply.
remarks: -------------- WARNING --------------
registrar: OVH
changed: 18/07/2012 anonymous@anonymous
anonymous: YES
obsoleted: NO
source: FRNIC
nic-hdl: OVH5-FRNIC
type: ROLE
contact: OVH NET
address: OVH
address: 140, quai du Sartel
address: 59100 Roubaix
country: FR
phone: +33 8 99 70 17 61
e-mail: tech@ovh.net
trouble: Information: http://www.ovh.fr
trouble: Questions: mailto:tech@ovh.net
trouble: Spam: mailto:abuse@ovh.net
admin-c: OK217-FRNIC
tech-c: OK217-FRNIC
notify: tech@ovh.net
registrar: OVH
changed: 11/10/2006 tech@ovh.net
anonymous: NO
obsoleted: NO
source: FRNIC
REFERRER http://www.nic.fr
REGISTRAR AFNIC
SERVERS
SERVER fr.whois-servers.net
ARGS tutoriel-symfony2.fr
PORT 43
TYPE domain
RegrInfo
DISCLAIMER
%
% This is the AFNIC Whois server.
%
% complete date format : DD/MM/YYYY
% short date format : DD/MM
% version : FRNIC-2.5
%
% Rights restricted by copyright.
% See https://www.afnic.fr/en/products-and-services/services/whois/whois-special-notice/
%
% Use '-h' option to obtain more information about this service.
%
% [2600:3c03:0000:0000:f03c:91ff:feae:779d REQUEST] >> tutoriel-symfony2.fr
%
% RL Net [##########] - RL IP [######....]
%
REGISTERED yes
ADMIN
HANDLE OVH5-FRNIC
TYPE ROLE
CONTACT OVH NET
ADDRESS
OVH
140, quai du Sartel
59100 Roubaix
COUNTRY FR
PHONE +33 8 99 70 17 61
EMAIL tech@ovh.net
TROUBLE
Information: http://www.ovh.fr
Questions: mailto:tech@ovh.net
Spam: mailto:abuse@ovh.net
ADMIN-C OK217-FRNIC
TECH-C OK217-FRNIC
NOTIFY tech@ovh.net
SPONSOR OVH
CHANGED 2006-10-11
ANONYMOUS NO
OBSOLETED NO
SOURCE FRNIC
TECH
HANDLE OVH5-FRNIC
TYPE ROLE
CONTACT OVH NET
ADDRESS
OVH
140, quai du Sartel
59100 Roubaix
COUNTRY FR
PHONE +33 8 99 70 17 61
EMAIL tech@ovh.net
TROUBLE
Information: http://www.ovh.fr
Questions: mailto:tech@ovh.net
Spam: mailto:abuse@ovh.net
ADMIN-C OK217-FRNIC
TECH-C OK217-FRNIC
NOTIFY tech@ovh.net
SPONSOR OVH
CHANGED 2006-10-11
ANONYMOUS NO
OBSOLETED NO
SOURCE FRNIC
OWNER
HANDLE ANO00-FRNIC
TYPE PERSON
CONTACT Ano Nymous
REMARKS
-------------- WARNING --------------
While the registrar knows him/her,
this person chose to restrict access
to his/her personal data. So PLEASE,
don't send emails to Ano Nymous. This
address is bogus and there is no hope
of a reply.
-------------- WARNING --------------
SPONSOR OVH
CHANGED 2012-07-18
ANONYMOUS YES
OBSOLETED NO
SOURCE FRNIC
DOMAIN
STATUS ACTIVE
HOLD NO
SPONSOR OVH
EXPIRY DATE 18/07/2017
CREATED 2012-07-18
CHANGED 2016-07-18
SOURCE FRNIC
HANDLE NSL64684-FRNIC
NSERVER
DNS102.OVH.NET 213.251.188.146
NS102.OVH.NET 213.251.128.146
NAME tutoriel-symfony2.fr
Go to top