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] == |