Changes between Version 161 and Version 162 of members/GRIP-UQAM


Ignore:
Timestamp:
Aug 22, 2016, 2:43:02 PM (5 years ago)
Author:
Grip Uqam
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • members/GRIP-UQAM

    v161 v162  
    320320== Javascript Programming (Server Side) ==
    321321* [DebianPackage:node-express], [DebianPackage:node-], https://qa.debian.org/developer.php?login=pkg-javascript-devel@lists.alioth.debian.org
    322 == [https://packagist.org/packages/doctrine/orm doctrine/orm] ==
    323 === Doctrine Console ===
    324 * http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/tools.html
    325 * https://sonata-project.org/bundles/admin/2-3/doc/getting_started/creating_an_admin.html
    326 {{{#!sh
    327 $ php bin/console doctrine:generate:entity --entity="AppBundle:Category" --fields="name:string(255)" --no-interaction
    328 $ php bin/console doctrine:generate:entity --entity="AppBundle:BlogPost" --fields="title:string(255) body:text draft:boolean" --no-interaction
    329 }}}
    330 === Relations ===
    331 * //Les relations entre entités avec Doctrine2// [https://openclassrooms.com/courses/developpez-votre-site-web-avec-le-framework-symfony2/les-relations-entre-entites-avec-doctrine2 OpenClassrooms]
    332 * //Les relations entre entités dans Symfony2 avec Doctrine// [http://www.lafermeduweb.net/tutorial/les-relations-entre-entites-dans-symfony2-avec-doctrine-p97.html lafermeduweb]
    333 === Cascade ===
    334 * doctrine ondelete
    335 * doctrine one to many cascade
    336 * //8. Working with Associations// [http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/working-with-associations.html readthedocs]
    337 * //Doctrine Cascade Options for OneToMany// [https://stackoverflow.com/questions/7709293/doctrine-cascade-options-for-onetomany stackoverflow]
    338 * //cascade={“remove”} VS orphanRemoval=true VS ondelete="CASCADE// [https://stackoverflow.com/questions/27472538/cascade-remove-vs-orphanremoval-true-vs-ondelete-cascade stackoverflow]
    339 === Events ===
    340 * https://openclassrooms.com/courses/developpez-votre-site-web-avec-le-framework-symfony2/les-evenements-et-extensions-doctrine
    341 === Extensions - Behaviors ===
    342 Gedmo are a standard, but Translatable is criticized
    343 * [https://packagist.org/packages/gedmo/doctrine-extensions gedmo/doctrine-extensions]
    344  * https://github.com/Atlantic18/DoctrineExtensions#extensions-and-documentation
    345  * https://github.com/Atlantic18/DoctrineExtensions/tree/master/doc
    346  * https://atlantic18.github.io/DoctrineExtensions/
    347  * //Gedmo l'extension Doctrine 2 dans Symfony2// 2012 [http://julien.edouard.overblog.com/gedmo-l-extension-doctrine-2-dans-symfony2 overblog]
    348 * [https://packagist.org/packages/knplabs/doctrine-behaviors knplabs/doctrine-behaviors]
    349 ==== Compatibility Issues between Extensions ====
    350 * SoftDeleteable - Sortable
    351   * https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/softdeleteable.md#extra
    352 * Sluggable, Translatable and Tree
    353   * https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/tree.md#nesting-translatable-and-sluggable-extensions
    354 ==== Audit, Revision or Loggable ====
    355 * Versioning of entities and their associations [https://packagist.org/packages/simplethings/entity-audit-bundle simplethings/entity-audit-bundle]
    356 * https://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/audit.html
    357 * Loggable
    358   * Helps tracking changes and history of objects, also supports version management [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/loggable.md Gedmo]
    359     * Admin support [https://packagist.org/packages/picoss/sonata-extra-admin-bundle picoss/sonata-extra-admin-bundle] [https://github.com/picoss/SonataExtraAdminBundle/blob/master/Resources/doc/audit_manager.md doc/audit_manager]
    360     * [https://www.youtube.com/watch?v=wxgIHNtEN84 YouTube]
    361   * Loggable is able to track lifecycle modifications and log them using any third party log system [https://github.com/KnpLabs/DoctrineBehaviors#loggable KNP Labs]
    362 ==== Blameable ====
    363 * Updates string or reference fields on create, update and even property change with a string or object (e.g. user) [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/blameable.md Gedmo]
    364 * Track creators and updators of a given entity [https://github.com/KnpLabs/DoctrineBehaviors#blameable KNP Labs]
    365 ==== Filterable ====
    366 * Simple filter result [https://github.com/KnpLabs/DoctrineBehaviors#filterable KNP Labs]
    367 ==== Geocodable ====
    368 * Extensions to PostgreSQL platform in order to work with cube and earthdistance extensions [https://github.com/KnpLabs/DoctrineBehaviors#geocodable KNP Labs]
    369 ==== IpTraceable ====
    370 * Inherited from Timestampable, sets IP address instead of timestamp [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/ip_traceable.md Gedmo]
    371 ==== Joinable ====
    372 * KNP Labs
    373 ==== Loggable (see Audit, Revision) ====
    374 ==== References ====
    375 * Supports linking Entities in Documents and vice versa [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/references.md Gedmo]
    376 ==== ReferenceIntegrity ====
    377 * Constrains ODM MongoDB Document references [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/reference_integrity.md Gedmo]
    378 ==== Revision (see Audit, Loggable) ====
    379 ==== Sluggable ====
    380 * Urlizes your specified fields into single unique slug [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/sluggable.md Gedmo]
    381 * Sluggable generates slugs (uniqueness is not guaranteed) for an entity [https://github.com/KnpLabs/DoctrineBehaviors#sluggable KNP Labs]
    382 * Sluggable, Translatable and Tree (Compatibility issue)
    383   * https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/tree.md#nesting-translatable-and-sluggable-extensions
    384 ==== SoftDeleteable ====
    385 * Allows to implicitly remove records [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/softdeleteable.md Gedmo] [https://github.com/KnpLabs/DoctrineBehaviors#softDeletable KNP Labs]
    386 * SoftDeleteable - Sortable (Compatibility issue)
    387   * https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/softdeleteable.md#extra
    388 * Admin support [https://packagist.org/packages/picoss/sonata-extra-admin-bundle picoss/sonata-extra-admin-bundle]
    389 * keyword: SoftDeleteable
    390 * //StofDoctrineExtensionsBundle softdelete - How do I use it?// [https://stackoverflow.com/questions/16670454/stofdoctrineextensionsbundle-softdelete-how-do-i-use-it stackoverflow]
    391 * //Episode 39 - Utiliser l'extension softdeleteable avec Symfony2// DevAndClick [https://www.youtube.com/watch?v=kBzDiOFaRFY YouTube (fr)]
    392 ==== Sortable ====
    393 * Makes any document or entity sortable [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/sortable.md Gedmo] KNP Labs
    394 * SoftDeleteable - Sortable (Compatibility issue)
    395   * https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/softdeleteable.md#extra
    396 ==== Timestampable ====
    397 * Updates date fields on create, update and even property change [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/timestampable.md Gedmo] [https://github.com/KnpLabs/DoctrineBehaviors#timestampable KNP Labs]
    398 ==== Translatable ====
    399 * Gives you a very handy solution for translating records into different languages [https://github.com/Atlantic18/DoctrineExtensions/blob/maste/doc/translatable.md Gedmo]
    400  * [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md#example-code-to-use-personal-translations-with-symfony2-sonata-i18n-forms Example code to use Personal Translations with (Symfony2 Sonata) i18n Forms]
    401 * [https://github.com/KnpLabs/DoctrineBehaviors#translatable KNP Labs]
    402 * Sluggable, Translatable and Tree (Compatibility issue)
    403   * https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/tree.md#nesting-translatable-and-sluggable-extensions
    404 ==== Translator ====
    405 * Explicit way to handle translations [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md Gedmo]
    406 ==== Tree ====
    407 * This extension automates the tree handling process and adds some tree specific functions on repository. (closure, nestedset or materialized path) [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/tree.md Gedmo] [https://github.com/KnpLabs/DoctrineBehaviors#tree KNP Labs]
    408 * Sluggable, Translatable and Tree (Compatibility issue)
    409   * https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/tree.md#nesting-translatable-and-sluggable-extensions
    410 ==== Uploadable ====
    411 * Provides file upload handling in entity fields [https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/uploadable.md Gedmo]
    412 == Symfony Programming ==
    413 * http://fr.slideshare.net/AcquiaInc/create-a-symfony-application-from-a-drupal-perspective
    414 * https://www.youtube.com/results?search_query=symfony
    415 * https://www.youtube.com/results?q=knpuniversity
    416  * http://knpuniversity.com/tracks/symfony
    417 === Tutorials ===
    418 * [http://www.ens.ro/2012/03/21/jobeet-tutorial-with-symfony2/ Jobeet Tutorial with Symfony2] [http://jobeet.thuau.fr/ fr]
    419 * DevAndClick [https://www.youtube.com/channel/UCyEM6z6Ssl9K5Khg46DY3Mw YouTube]
    420 === Software using Symfony ===
    421 * //[https://www.symfony.fi/entry/symfony-components-full-stack-framework-cms-ecosystems Symfony components and the full stack framework in CMS ecosystems]
    422 ==== EZ Plateform ====
    423 * EZ Plateform and Symfony Article from Symfony Finland
    424 * https://packagist.org/packages/ezsystems/ezplatform
    425 * http://share.ez.no/downloads/downloads
    426 * https://doc.ez.no/display/TECHDOC/Requirements (Postgres install not yet supported 2016-04)
    427 * https://doc.ez.no/display/TECHDOC/Using+Composer
    428 === Symfony Programming Tools ===
    429 * [https://packagist.org/packages/sensiolabs-de/deprecation-detector sensiolabs-de/deprecation-detector]
    430 * [https://packagist.org/packages/sensiolabs-de/deptrac sensiolabs-de/deptrac]
    431 === Hacking ===
    432 ==== {{{autoload.php}}} ====
    433 * https://github.com/symfony/symfony-standard/blob/master/app/autoload.php The original
    434 * https://github.com/symfony-cmf/standard-edition/blob/master/app/autoload.php Almost the same, maybe slightly older version
    435 * https://github.com/symfony-cmf/cmf-sandbox/blob/master/app/autoload.php Locale component additions and others
    436 === MicroKernel ===
    437 * http://symfony.com/blog/new-in-symfony-2-8-symfony-as-a-microframework
    438 * https://symfony.com/doc/current/cookbook/configuration/micro-kernel-trait.html
    439 * https://www.youtube.com/results?search_query=symfony+microkernel
    440 * https://knpuniversity.com/screencast/new-in-symfony3/micro-kernel
    441 * https://www.youtube.com/results?search_query=micro+symfony
    442 * http://knpuniversity.com/screencast/micro-symfony
    443 === Components ===
    444 ==== Form ====
    445 ===== Translation =====
    446 * see Bundle-Form-Translation
    447 * see Bundle-Admin-Translation
    448 ==== Routing ====
    449 ===== RouteCollection vs RouteCollectionBuilder =====
    450 {{{#!th
    451 **[http://api.symfony.com/3.0/Symfony/Component/Routing/RouteCollection.html RouteCollection]**
    452 }}}
    453 {{{#!th
    454 **[http://api.symfony.com/3.0/Symfony/Component/Routing/RouteCollectionBuilder.html RouteCollectionBuilder]**
    455 }}}
    456 |----------------
    457 || || ||
    458 {{{#!td rowspan=2
    459 **add**(string $name, Route $route)
    460 }}}
    461 {{{#!td
    462 $this   **addRoute**(Route $route, string|null $name = null)
    463 }}}
    464 |----------------
    465 {{{#!td
    466 Route   **add**(string $path, string $controller, string|null $name = null
    467 }}}
    468 |----------------
    469 {{{#!td
    470 {{{#!js
    471 new RouteCollection()->add('root', new Route('/', [
    472     '_controller' => 'FrameworkBundle:Redirect:redirect',
    473     'route'       => 'sonata_admin_dashboard',
    474     'permanent'   => true,
    475 ])); // to check
    476 }}}
    477 }}}
    478 {{{#!td
    479 {{{#!js
    480 new RouteCollectionBuilder()->addRoute(new Route('/', [
    481     '_controller' => 'FrameworkBundle:Redirect:redirect',
    482     'route'       => 'sonata_admin_dashboard',
    483     'permanent'   => true,
    484 ]),
    485     'root'
    486 ); // to check
    487 }}}
    488 }}}
    489 |----------------
    490 {{{#!td
    491 //Does not exist: cf// $loader->**import**(...)
    492 }}}
    493 {{{#!td
    494 RouteCollectionBuilder  **import**(mixed $resource, string|null $prefix = '/', string $type = null)
    495 }}}
    496 |----------------
    497 {{{#!td
    498 //Does not exist: cf//  **addCollection**
    499 }}}
    500 {{{#!td
    501 **mount**($prefix, RouteCollectionBuilder $builder)
    502 }}}
    503 |----------------
    504 {{{#!td
    505 {{{#!js
    506 $collection = new RouteCollection();
    507 $routing = $loader->import(
    508     "@SonataAdminBundle/Resources/config/sonata_admin.xml"
    509 );
    510 $routing->setPrefix('/admin');
    511 $collection->addCollection($routing);
    512 }}}
    513 }}}
    514 {{{#!td
    515 {{{#!js
    516 $routes->mount('/admin', $routes->import('@SonataAdminBundle/Resources/config/routing/sonata_admin.xml'));
    517 }}}
    518 }}}
    519 |----------------
    520 * [http://symfony.com/doc/current/cmf/tutorial/sonata-admin.html cmf/tutorial/sonata-admin]
    521 * [http://symfony.com/doc/current/cookbook/routing/custom_route_loader.html cookbook/routing/custom_route_loader]
    522 === Bundles ===
    523 ==== [https://packagist.org/packages/symfony/framework-standard-edition symfony/framework-standard-edition] ====
    524 * [http://documentation-symfony.fr/bundles documentation-symfony.fr/bundles (french)]
    525 
    526 * https://github.com/symfony/symfony-standard
    527 * https://github.com/symfony/symfony-standard/blob/master/app/AppKernel.php
    528 
    529 * symfony/framework-bundle FrameworkBundle - The core Symfony framework bundle
    530  * Some components may sometimes be required
    531   * symfony/console (for console)
    532   * symfony/process (for console server:run)
    533   * symfony/validator
    534   * symfony/expression-language
    535   * symfony/psr-http-message-bridge
    536   * zendframework/zend-diactoros
    537 * [https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/ SensioFrameworkExtraBundle] [http://documentation-symfony.fr/bundles/SensioFrameworkExtraBundle/ fr]- Adds several enhancements, including template and routing annotation capability
    538  * If you plan to use or create annotations for controllers, make sure to update your {{{autoload.php}}} by adding the following line...
    539   * https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/index.html#installation
    540   * Included in [https://packagist.org/packages/symfony/framework-standard-edition symfony/framework-standard-edition]
    541 * [https://packagist.org/packages/doctrine/doctrine-bundle doctrine/doctrine-bundle] [https://symfony.com/doc/current/book/doctrine.html DoctrineBundle] - Adds support for the Doctrine ORM
    542  * [https://packagist.org/packages/doctrine/orm doctrine/orm] has to be required if needed
    543  * Extensions:
    544   * https://symfony.com/doc/master/bundles/StofDoctrineExtensionsBundle/index.html
    545    * http://symfony.com/doc/current/cookbook/doctrine/common_extensions.html
    546    * [https://packagist.org/packages/stof/doctrine-extensions-bundle stof/doctrine-extensions-bundle]
    547   * KNP
    548 * TwigBundle - Adds support for the Twig templating engine
    549 * symfony/security-bundle SecurityBundle - Adds security by integrating Symfony's security component
    550  * symfony/security may need to be also required
    551 * symfony/swiftmailer-bundle SwiftmailerBundle - Adds support for Swiftmailer, a library for sending emails
    552 * MonologBundle - Adds support for Monolog, a logging library
    553 
    554 * WebProfilerBundle (in dev/test env) - Adds profiling functionality and the web debug toolbar
    555 * SensioDistributionBundle (in dev/test env) - Adds functionality for configuring and working with Symfony distributions
    556 * [https://packagist.org/packages/sensio/generator-bundle sensio/generator-bundle] [https://symfony.com/doc/current/bundles/SensioGeneratorBundle/ SensioGeneratorBundle] [http://documentation-symfony.fr/bundles/SensioGeneratorBundle/ fr] (in dev/test env) - Adds code generation capabilities
    557   * Choosing the annotation format expects the SensioFrameworkExtraBundle to be installed
    558     * https://symfony.com/doc/current/bundles/SensioGeneratorBundle/commands/generate_bundle.html#available-options
    559   * There should be one line of imports in the {{{config.yml}}} file! (otherwise changes may not be added to it!)
    560     * https://github.com/symfony/symfony-standard/blob/master/app/config/config.yml
    561   * [http://symfony.com/doc/current/bundles/SensioGeneratorBundle/commands/generate_bundle.html Generating a New Bundle Skeleton]
    562     * in composer.json (for autoload):
    563 {{{#!json
    564     "autoload": {
    565         "psr-4": {
    566             "": "src/"
    567         }
    568     }
    569 }}}
    570 {{{#!sh
    571 $ php bin/console generate:bundle --namespace=AppBundle --bundle-name=AppBundle --format=annotation --dir=../src --no-interaction
    572 
    573   Bundle generation
    574 
    575 > Generating a sample bundle skeleton into app/../src/AppBundle OK!
    576 > Checking that the bundle is autoloaded: OK
    577 > Enabling the bundle inside /...app/AppKernel.php: OK
    578 > Importing the bundle\'s routes from the app/config/routing.yml file: OK
    579 > Importing the bundle\'s services.yml from the app/config/config.yml file: OK
    580 
    581   Everything is OK! Now get to work :). 
    582 }}}
    583     * files touched:
    584       * app/../src/AppBundle (directory and content generated)
    585       * app/AppKernel.php
    586       * app/config/routing.yml
    587       * app/config/config.yml (see note about line of import)
    588 * DebugBundle (in dev/test env) - Adds Debug and VarDumper component integration
    589 ==== Bundles documented by symfony.com ====
    590 * [https://packagist.org/packages/doctrine/doctrine-fixtures-bundle doctrine/doctrine-fixtures-bundle] [http://symfony.com/doc/current/bundles/DoctrineFixturesBundle symfony.com] [http://documentation-symfony.fr/bundles/DoctrineFixturesBundle fr]
    591 * [https://packagist.org/packages/sonata-project/admin-bundle sonata-project/admin-bundle] [http://symfony.com/doc/current/bundles/SonataAdminBundle symfony.com] [http://symfony.com/doc/current/cmf/tutorial/sonata-admin.html cmf/tutorial]
    592 * [https://packagist.org/packages/stof/doctrine-extensions-bundle stof/doctrine-extensions-bundle] [http://symfony.com/doc/current/bundles/StofDoctrineExtensionsBundle symfony.com]
    593 ==== User ====
    594 * friendsofsymfony/user-bundle
    595 ==== Social Login ====
    596 * https://en.wikipedia.org/wiki/Social_login
    597 ===== OAuth =====
    598 * [https://packagist.org/packages/hwi/oauth-bundle hwi/oauth-bundle]
    599 * [https://packagist.org/packages/friendsofsymfony/oauth-server-bundle friendsofsymfony/oauth-server-bundle] (server)
    600 * http://knpuniversity.com/screencast/oauth
    601  * https://www.youtube.com/watch?v=io_r-0e3Qcw
    602 * https://www.youtube.com/results?search_query=oauth
    603 ===== HybridAuth =====
    604 * [https://packagist.org/packages/azine/hybridauth-bundle azine/hybridauth-bundle]
    605 * [https://packagist.org/packages/sllh/hybridauth-bundle sllh/hybridauth-bundle]
    606 * [https://packagist.org/packages/itlized/social itlized/social]
    607 ===== OpenID =====
    608 * [https://packagist.org/packages/fp/openid-bundle fp/openid-bundle]
    609 * [https://packagist.org/packages/writtengames/openid-user-bundle writtengames/openid-user-bundle]
    610 * [https://packagist.org/packages/raphox/alb-open-id-server-bundle raphox/alb-open-id-server-bundle] (server)
    611 ==== Form related ====
    612 * [https://packagist.org/packages/a2lix/translation-form-bundle a2lix/translation-form-bundle]
    613  * http://a2lix.fr/2014/08/04/translate-internationalize-doctrine-entities-sonata.html
    614 ==== Admin [https://packagist.org/packages/sonata-project/admin-bundle sonata-project/admin-bundle] ====
    615 * [http://symfony.com/doc/current/bundles/SonataAdminBundle symfony.com] [https://sonata-project.org/bundles/admin sonata-project.org]
    616 * [https://packagist.org/packages/sonata-project/doctrine-orm-admin-bundle sonata-project/doctrine-orm-admin-bundle] [https://sonata-project.org/bundles/doctrine-orm-admin sonata-project.org]
    617 * [https://packagist.org/packages/sonata-project/doctrine-phpcr-admin-bundle sonata-project/doctrine-phpcr-admin-bundle]
    618 * [https://packagist.org/packages/sonata-project/doctrine-mongodb-admin-bundle sonata-project/doctrine-mongodb-admin-bundle]
    619 * http://stackoverflow.com/questions/22916083/sonata-admin-bundle-adding-link-to-related-entities-in-configure-list
    620 ===== Admin without Admin Bundle =====
    621 * //[https://youtu.be/zHuG-MyDQa8?list=PLzPK7Fy3SN2cvLglujdweDKNMNQhHDbTT Episode 22 - Créer une administration avec Symfony2]// (fr)
    622 ===== Default value =====
    623 * keyword: sonata admin getnewinstance
    624 * https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_custom_action.html
    625 * https://stackoverflow.com/questions/10546168/setting-default-value-in-symfony2-sonata-admin-bundle
    626 ===== Translation [https://packagist.org/packages/sonata-project/translation-bundle sonata-project/translation-bundle] =====
    627 * [https://sonata-project.org/bundles/translation sonata-project.org]
    628 * see Doctrine-Extensions-Translatable
    629 * see Bundle (Component)-Form-Translation
    630  * http://a2lix.fr/2014/08/04/translate-internationalize-doctrine-entities-sonata.html
    631 ===== Tree =====
    632 * https://stackoverflow.com/questions/32346555/manage-crud-operations-for-hierarchical-data-tree-structure-with-sonataadminbu
    633 ===== Formatter =====
    634 ===== CKEditor =====
    635 * http://www.techtonet.com/sonata-add-ckeditor-in-admin-textareas/
    636 * https://stackoverflow.com/questions/20269617/how-to-add-ckeditor-to-sonata-admin-backends-textareas
    637 ==== CKEditor ====
    638 * [https://packagist.org/packages/egeloen/ckeditor-bundle egeloen/ckeditor-bundle]
    639 ==== Tree ====
    640 * [https://packagist.org/packages/symfony-cmf/tree-browser-bundle symfony-cmf/tree-browser-bundle]
    641  * http://symfony.com/doc/current/cmf/bundles/tree_browser/introduction.html
    642 * http://www.codeproject.com/Tips/418196/Editing-Tree-Structures-in-Symfony
    643 * http://knpbundles.com/keyword/tree-symfony-bundle
    644 ==== Tag and Taxonomy ====
    645 * [https://packagist.org/packages/sonata-project/classification-bundle sonata-project/classification-bundle]
    646 * [https://packagist.org/packages/mw/tag-admin-bundle mw/tag-admin-bundle]
    647  * [https://packagist.org/packages/fpn/tag-bundle fpn/tag-bundle]
    648 ==== News, Newsletter ====
    649 * [https://packagist.org/packages/stfalcon/news-bundle stfalcon/news-bundle]
    650 ==== Search ====
    651 * [https://packagist.org/packages/symfony-cmf/search-bundle symfony-cmf/search-bundle]
    652 * [https://packagist.org/packages/liip/search-bundle liip/search-bundle]
    653 ==== Payment ====
    654 * [https://packagist.org/packages/payum/payum-bundle payum/payum-bundle]
    655 ==== Help Desk, Bug Tracking and Ticket ====
    656 * [https://packagist.org/packages/liuggio/help-desk-bundle liuggio/help-desk-bundle]
    657 === CLI code generation example ===
    658 {{{#!sh
    659 $ php bin/console generate:bundle --namespace=AppBundle --bundle-name=AppBundle --format=annotation --dir=../src --no-interaction
    660 $ php bin/console assets:install ../web --symlink --relative
    661 $ php bin/console doctrine:generate:entity --entity="AppBundle:Category" --fields="name:string(255)" --no-interaction
    662 $ php bin/console doctrine:generate:entity --entity="AppBundle:BlogPost" --fields="title:string(255) body:text draft:boolean" --no-interaction
    663 $ php bin/console doctrine:schema:create
    664 $ php bin/console doctrine:schema:update # after modification
    665 }}}
    666 See
    667 * sensio/generator-bundle
    668 * doctrine/orm
     322== [wiki:members/GRIP-UQAM/Doctrine_(PHP) Doctrine_(PHP)] ==
     323== [wiki:members/GRIP-UQAM/Symfony Symfony Programming] ==