Pour désérialiser extraire, un tableau qui a été sérialisé dans une chaîne de caractère (string), il manque à Smarty la fonction {unserialize}
Heureusement il existe une astuce depuis Smarty 3:
![]()
Comme beaucoup de développeurs web, vous avez parfois besoin de faire passer votre navigateur pour un autre. Cela peut s’avérer très pratique pour simuler un site destiné à un iphone (webkit: le moteur de rendu de l’iphone est très proche de celui de chrome).
Pour cela vous avez le plugin User agent switcher, mais si ce plugin fonctionne parfaitement sous Firefox, il ne semble pas fonctionner correctement sous Chrome.
Heureusement il existe une solution alternative à ce plugin
Les initialisations ne contiennent pas de paramètres, a part le nom des objets qui sont créés (projet, appli, module)
$ ./symfony init-project room-on-line
$ ./symfony init-app accountancy
Avec symfony, un projet peut contenir plusieurs applications. Dans cet exemple j’ai créé une application de facturation nommée : accountancy
$ ./symfony init-module accountancy customer
$ ./symfony propel-generate-crud accountancy customer Customer
Les applications contiennes à leur tour des modules. Ici j’ai ajouté le module client (customer), dans l’application de facturation (accountancy)
La seconde ligne permet de générer les actions de lecture et de modification de la base. Je ne comprends pas pourquoi elles ne sont pas faites systématiquement comme en rails…
Ici j’utiliserai propel.
Il faut éditer le fichier : config/schema.yml
propel:
customer:
id: ~
pays_id: { type: integer, foreignTable: customer, foreignReference: id}
name: { type: varchar(255), required: true }
shortname: { type: varchar(255) }
adress: { type: varchar(255) }
zipcode: { type: varchar(5) }
city: { type: varchar(255) }
phone: { type: varchar(15) }
booking:
id: ~
customer_id: ~
date: { type: date }
valuation:
id: ~
date: { type: date }
comment: { type: longvarchar }
invoice:
id: ~
booking_id: ~
customer_id: ~
number: { type: integer }
paid_at: { type: date }
is_paid: { type: boolean }
is_cancelled: { type: boolean }
Maintenant que le modèle de données à été édité, on va construire le modèle de données en fonction de ce fichier schema.yml.
$ ./symfony propel:build-all
Symfony est désormais prêt à utiliser ce modèle de données, mais il n’a pas encore appliqué le modèle à la base de données.
$ ./symfony propel:insert-sql
La base de données contient maintenant les tables du projet.
$ ./symfony propel:generate-module accountancy customer Customer
Je viens de créer les actions CRUD (Create Read Update Delete) du module client (customer).
Ce module se trouve dans l’application accountancy, et stocke ses données dans la base Customer.
$ ./symfony cc
Symfony génère énormément de fichier cache pour améliorer ses performances. Le problème c’est que ce cache doit régulièrement être vidé, notamment avant de faire un commit sur un serveur de source comme subversion.
Générer ou mettre à jour un fichier de langue
$ ./symfony i18n:extract --auto-save --auto-delete accountancy fr
Mon fichier i18n français pour l’application accountancy a été regénéré avec les valeurs des templates.