Mémo : Ligne de commande Symfony

Quelques ligne de commandes utile pour symfony. A compléter.

Générer un bundle:
php app/console generate:bundle --namespace=Acme/HelloBundle --format=yml

Générer les entités de l’application « Acme » :
php app/console doctrine:generate:entities Acme

Met à jour la structure de la base de données en fonction des entités :
php app/console doctrine:schema:update --force

Vider le cache :
php app/console cache:clear

Liste des routes :
php app/console router:debug

Générer un controlleur CRUD (listing, modification, suppression, ajout) d’une entité Doctrine :
php app/console generate:doctrine:crud --entity=AcmeBlogBundle:Post

Mettre à jour les dépendance avec composer :
\dans\ma\racine \chemin\vers\composer.phar update

FOSUserBundle : Redirection aprés inscription

Pour avoir recherché un moment la solution pour rediriger un utilisateur après la création de son compte sous symfony (version 2.4) avec le FOSUserBundle sans trouver le résultat convenable, voici la solution :

Création du fichier \Acme\MemberBundle\EventListener\RegistrationConfirmListener.php dans votre UserBundle

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
namespace Casting\MemberBundle\EventListener;

use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Event\UserEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;

/**
 * Redirection aprés enregistrement d'un utilisateur
 */

class RegistrationConfirmListener implements EventSubscriberInterface
{
    private $router;

    public function __construct(UrlGeneratorInterface $router)
    {
        $this->router = $router;
    }

    /**
     * {@inheritDoc}
     */

    public static function getSubscribedEvents()
    {
        return array(
                FOSUserEvents::REGISTRATION_SUCCESS => 'onRegistrationConfirm'
        );
    }

    public function onRegistrationConfirm(\FOS\UserBundle\Event\FormEvent $event)
    {
        $url = $this->router->generate('nom_de_ma_route');

        $event->setResponse(new RedirectResponse($url));
    }
}

et dans Acme\MemberBundle\Resources\config\services.yml

1
2
3
4
5
6
services:
    redirect_register_user.registration.completed:
        class: Casting\MemberBundle\EventListener\RegistrationConfirmListener
        arguments: [@router]
        tags:
            - { name: kernel.event_subscriber }

via

Initialiser l’environnement wordpress dans un script externe

Il arrive de devoir utiliser les constantes, variables, fonctions et méthodes de l’environnement wordpress et de son thème sur un script à part. Pour valider un paiement par exemple via le fichier appelé par la banque, ou encore la création d’une vraie tache cron.

Voici les quelques lignes à placer en début de fichier. Pour charger le bon thème en mode multisite voir la dernière ligne.

1
2
3
4
5
6
7
//Indiquer le dommaine
$_SERVER['HTTP_HOST'] = 'www.monsite.fr';
//chargement de l'environnement, indiquer le chemin du fichier wp-load.php de la racine de wordpress
$wp_load_loc = "/chemin/du/fichier/wp-load.php";
require_once($wp_load_loc);
//en multisite, pour passer sur le bon environnement si besoin
switch_to_blog(3);// Indiquer l'identifiant du blog souhaité évidement.

via

Mémo : barre admin de WordPress

Afficher la barre admin seulement pour les utilisateurs administrateurs :

1
2
3
4
5
6
7
8
9
10
add_filter('show_admin_bar', 'bar_is_admin');

function bar_is_admin() {
    $user = wp_get_current_user();
    if ($user->roles[0] == 'administrator') {
        return true;
    } else {
        return false;
    }
}

La barre est appelé via la fonction « wp_footer(); » juste avant la fermeture de la balise « </body> »

Installer Symfony 2 sous windows (pour l’utiliser sous wamp)

INSTALLATION SYMFONY (wamp étant considéré comme installé.)

Ouvrir l’invite de commande, et taper php puis entrée
1) Si php n’est pas reconnu l’ajouter au PATH :
- Panneau de configuration > Système et sécurité > Système > Paramètres système avancés
- Variables d’environnement
- Variables système -> Path -> Modifier
- Ajouter le bon chemin [;C:\wamp\bin\php\php5.4.12;] (à adapter selon la version php de wamp)
Redémarrer invite de commande.

2) Installer composer
Invite de commande :
- se placer dans wampp\www (cd C:\wamp\www)
- C:\wamp\www> php -r « eval(‘?>’.file_get_contents(‘http://getcomposer.org/installer’)); »
- Vérifier version : C:\wamp\www>php composer.phar –version
- Mettre à jour : C:\wamp\www>php composer.phar self-update

3) Installer Git
- Télécharger et éxécuter msysgit

4) Installer symfony
Invite de commande
- se placer dans le dossier d’installation souhaité (exemple cd C:\wamp\www\symfony)
- php ..\composer.phar create-project symfony/framework-standard-edition dev-master

Si erreur : « you must enable the openssl extension to download files via https »
- Trouver la ligne ;extension=php_openssl.dll dans wamp/bin/php/php#.#.##/php.ini et supprimer ; en début de ligne.
- Recommencer étape 4

5) Paramétrer avec composer
Invite de commande
- se placer dans le dossier d’installation de symfony
- php ..\composer.phar install

6) Vérifier la configuration
- aller dans le dossier de l’instalation /web/config.php

Suivre les indications

PHP : Lister tous les liens d’une URL distante (curl, expressions régulières)

Voici un petit script PHP commenté permettant de récupérer le code source d’une url , ici en paramètre $_GET. De chercher dans ces sources tous les liens <a href= »… »> et de les lister.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//Initialisation curl
$c = curl_init();
//url à telecharger en parametre, ici $_GET['url']
curl_setopt($c, CURLOPT_URL, $_GET['url']);
//Option curl : pour récupérer le contenus de la requete sous forme de chaine
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
//Option curl : on ne veux pas le contenu du header
curl_setopt($c, CURLOPT_HEADER, false);
//Option Curl : On suit les redirections
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
//on éxécute curl
$html = curl_exec($c);
//On ferme culr
curl_close($c);
//l'expression régulière permettant de trouver les liens
$output = preg_match_all('/<a.+href=[\'"]([^\'"]+)[\'"].*>/Ui', $html, $matches);
//pour chacuns des element trouvés
for ($i = 0; $i < $output; $i++) {
    //on affiche le contenue du lien href
    echo $matches[1][$i] . '<br>';
}

Ressoudre le bug « Undefined » à l’ajout d’image produit sous prestashop

Sur les serveurs mutualisé OVH, il survient un bug sous prestashop. Impossible d’uploader une image produit. Un message d’erreur « Undefined » apparait en bas de page.

Pour le résoudre il faut désactiver le pare-feu applicatif dans le manager OVH.

ecdeba60-254b-11e3-99d9-78414f9d06fcvia https://github.com/PrestaShop/PrestaShop/commit/3d1663279af813dafd19f128569c7c8fa4b34dea#commitcomment-4169409