Commandes utiles pour Symfony 2.X

Lister les commandes disponibles

php app/console list

Installation de Composer

curl -sS https://getcomposer.org/installer | php

Installation des dépendances du projet

php composer.phar install

Ou mise à jour

php composer.phar update

Nettoyer le cache de Symfony

php app/console cache:clear --env=dev 
php app/console cache:clear --env=prod

Génération des entités Doctrine

php app/console doctrine:generate:entities MonBundle

Création de la base de données

php app/console doctrine:database:create

Création du Schéma de base de données

php app/console doctrin:schema:create

Mise à jour (en dev uniquement) du schéma de base de données

php app/console doctrin:schema:update –force

Chargement des fixtures (Jeux de données de tests) en base de données

php app/console doctrine:fixtures:load

Installation des asset (ressources publiques telles que les css ou les images)

php app/console assets:install web

Export des routes pour le bundle FOSJsRoutingBundle

php app/console fos:js-routing:dump

Résoudre l’erreur « A template that extends another one cannot have a body » avec TWIG

Je travaille sur la conception d’un site Web à titre personnel, basé sur le framework Symphony. Mes connaissances en PHP restent pour le moment assez scolaires et je débute avec ce framework que je trouve très intéressant. Conjointement à Symphony j’utilise son moteur de template par défaut : Twig.

J’ai été confronté à l’erreur suivante :

A template that extends another one cannot have a body

Je disposais d’un template parent et d’un template fils qui étend ce template. A première vue, aucune erreur de visible sauf que l’en fouillant un peu… Le template fils commençait par un commentaire HTML <!– –> !

A savoir qu’un template étendu ne doit pas avoir de code HTML (body) en dehors d’un bloc {% bloc XXXX %} surchargé.

Maintenant je sais 😉

Lister le contenu d’un répertoire en PHP

Il peut parfois être intéressant de lister le contenu d’un répertoire en PHP. Cette fonctionnalité, proposée par défaut pas Apache 2, n’est pas toujours présente sur les serveurs HTTP alternatifs tel que nginx.

 

<?php
function ScanDirectory($Directory){

  $MyDirectory = opendir($Directory) or die('Erreur');
	while($Entry = @readdir($MyDirectory)) {
		if(is_dir($Directory.'/'.$Entry)&& $Entry != '.' && $Entry != '..') {
                         echo '<ul>'.$Directory;
			ScanDirectory($Directory.'/'.$Entry);
                        echo '</ul>';
		}
		else if($Entry != '.' && $Entry != '..' && $Entry != 'index.php') {
			echo '<li><a href='.$Entry.' />'.$Entry.'</li>';

                }
	}
  closedir($MyDirectory);
}

ScanDirectory('.');
?>

 

Customiser le pied de page d’un blog WordPress

Édition 27/09/2015 : Avant de se consacrer à cet article il est judicieux de créer un thème enfant. Je vous invite à lire la documentation et ce tutoriel. Personnellement, je préfère utiliser la ligne de commande comme expliqué dans le tutoriel, ceci évite de se poser trop de question et les erreurs.

Voici la procédure à suivre pour customiser le pied de page de votre blog WordPress.

Le pied de page de votre blog se trouve dans le fichier ‘footer.php’ de votre thème. Par exemple avec le thème $wordpress_dir/wp-content/themes/twentyfifteen/footer.php (ou $wordpress est le répertoire racine de votre site).

Voici le contenu par défaut ce fichier :

<?php
/**
 * The template for displaying the footer
 *
 * Contains the closing of the "site-content" div and all content after.
 *
 * @package WordPress
 * @subpackage Twenty_Fifteen
 * @since Twenty Fifteen 1.0
 */
?>

	</div><!-- .site-content -->

	<footer id="colophon" class="site-footer" role="contentinfo">
		<div class="site-info">
			<?php
				/**
				 * Fires before the Twenty Fifteen footer text for footer customization.
				 *
				 * @since Twenty Fifteen 1.0
				 */
				do_action( 'twentyfifteen_credits' );
				
			?>
			<a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentyfifteen' ) ); ?>"><?php printf( __( 'Proudly powered by %s', 'twentyfifteen' ), 'WordPress' ); ?></a>
		</div><!-- .site-info -->
	</footer><!-- .site-footer -->

</div><!-- .site -->

<?php wp_footer(); ?>

</body>
</html>

 

J’ai choisi d’y insérer le contenu de la page ‘A Propos’ du site.  Pour la récupérer j’utilise le code suivant :

$id=42;
$post = get_post($id);
$title = apply_filters('the_title', $post->post_title);
echo $title;
$content = apply_filters('the_content', $post->post_content);
echo $content;

Et ainsi j’obtiens :

<?php
/**
 * The template for displaying the footer
 *
 * Contains the closing of the "site-content" div and all content after.
 *
 * @package WordPress
 * @subpackage Twenty_Fifteen
 * @since Twenty Fifteen 1.0
 */
?>

	</div><!-- .site-content -->

	<footer id="colophon" class="site-footer" role="contentinfo">
		<div class="site-info">
			<?php
				/**
				 * Fires before the Twenty Fifteen footer text for footer customization.
				 *
				 * @since Twenty Fifteen 1.0
				 */
				do_action( 'twentyfifteen_credits' );
				
				
				$id=42;
				$post = get_post($id);
				$title = apply_filters('the_title', $post->post_title);
				//echo $title;
				$content = apply_filters('the_content', $post->post_content);
				echo $content;
				echo '<p>© TheG - 2014-2015</p>';
			?>
			<a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentyfifteen' ) ); ?>"><?php printf( __( 'Proudly powered by %s', 'twentyfifteen' ), 'WordPress' ); ?></a>
		</div><!-- .site-info -->
	</footer><!-- .site-footer -->

</div><!-- .site -->

<?php wp_footer(); ?>

</body>
</html>

 

 

 

Matomo encountered an error: Uncaught Error: Class "Piwik\Plugins\CustomVariables\CustomVariables" not found in /var/www/piwik/core/Tracker/TrackerCodeGenerator.php:101 Stack trace: #0 /var/www/piwik/plugins/SitesManager/API.php(160): Piwik\Tracker\TrackerCodeGenerator->generate() #1 [internal function]: Piwik\Plugins\SitesManager\API->getJavascriptTag() #2 /var/www/piwik/core/API/Proxy.php(255): call_user_func_array() #3 /var/www/piwik/core/Context.php(29): Piwik\API\Proxy->Piwik\API\{closure}() #4 /var/www/piwik/core/API/Proxy.php(158): Piwik\Context::executeWithQueryParameters() #5 /var/www/piwik/core/API/Request.php(274): Piwik\API\Proxy->call() #6 /var/www/thegtricks/wp-content/plugins/wp-piwik/classes/WP_Piwik/Request/Php.php(46): Piwik\API\Request->process() #7 /var/www/thegtricks/wp-content/plugins/wp-piwik/classes/WP_Piwik/Request/Php.php(18): WP_Piwik\Request\Php->call() #8 /var/www/thegtricks/wp-content/plugins/wp-piwik/classes/WP_Piwik/Request.php(63): WP_Piwik\Request\Php->request() #9 /var/www/thegtricks/wp-content/plugins/wp-piwik/classes/WP_Piwik.php(1038): WP_Piwik\Request->perform() #10 /var/www/thegtricks/wp-content/plugins/wp-piwik/classes/WP_Piwik.php(1205): WP_Piwik->request() #11 /var/www/thegtricks/wp-content/plugins/wp-piwik/classes/WP_Piwik/TrackingCode.php(16): WP_Piwik->updateTrackingCode() #12 /var/www/thegtricks/wp-content/plugins/wp-piwik/classes/WP_Piwik.php(296): WP_Piwik\TrackingCode->__construct() #13 /var/www/thegtricks/wp-includes/class-wp-hook.php(324): WP_Piwik->addJavascriptCode() #14 /var/www/thegtricks/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters() #15 /var/www/thegtricks/wp-includes/plugin.php(517): WP_Hook->do_action() #16 /var/www/thegtricks/wp-includes/general-template.php(3081): do_action() #17 /var/www/thegtricks/wp-content/themes/twentyfifteen-child/footer.php(45): wp_footer() #18 /var/www/thegtricks/wp-includes/template.php(810): require_once('...') #19 /var/www/thegtricks/wp-includes/template.php(745): load_template() #20 /var/www/thegtricks/wp-includes/general-template.php(92): locate_template() #21 /var/www/thegtricks/wp-content/themes/twentyfifteen/archive.php(68): get_footer() #22 /var/www/thegtricks/wp-includes/template-loader.php(106): include('...') #23 /var/www/thegtricks/wp-blog-header.php(19): require_once('...') #24 /var/www/thegtricks/index.php(17): require('...') #25 {main} thrown (which lead to: Session must be started before any output has been sent to the browser; output started in /var/www/thegtricks/wp-includes/class-wp-styles.php/290)