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