# Put parameters here that don't need to change on each machine where the app is deployed # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration parameters: locale: en app_locales: en|de|ru|it services: # default configuration for services in *this* file _defaults: autowire: true # Automatically injects dependencies in your services. autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. public: false # Allows optimizing the container by removing unused services; this also means # fetching services directly from the container via $container->get() won't work. # The best practice is to be explicit about your dependencies anyway. bind: $projectDirectory: "%kernel.project_dir%" $durationOnly: "%kimai.timesheet.duration_only%" # makes classes in src/ available to be used as services # this creates a service per class whose id is the fully-qualified class name App\: resource: '../src/*' exclude: '../src/{Entity,Migrations,Tests}' # controllers are imported separately to make sure services can be injected # as action arguments even if you don't extend any base controller class App\Controller\: resource: '../src/Controller' tags: ['controller.service_arguments'] # ================================================================================ # APPLICATION CORE # ================================================================================ App\Invoice\ServiceInvoice: class: App\Invoice\ServiceInvoice arguments: ['%kimai.invoice%'] App\EventSubscriber\RedirectToLocaleSubscriber: class: App\EventSubscriber\RedirectToLocaleSubscriber arguments: ['@router', '%app_locales%', '%locale%'] tags: - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } App\Calendar\Service: arguments: $config: "%kimai.calendar%" # ================================================================================ # DATABASE # ================================================================================ # service that prefixes every database table App\Doctrine\TablePrefixSubscriber: class: App\Doctrine\TablePrefixSubscriber arguments: ["%env(resolve:DATABASE_PREFIX)%"] tags: - { name: doctrine.event_subscriber } # updates timesheet records and apply configured rate & rounding rules App\Doctrine\TimesheetSubscriber: class: App\Doctrine\TimesheetSubscriber arguments: [!tagged timesheet.calculator] tags: - { name: doctrine.event_listener, event: prePersist, lazy: true } - { name: doctrine.event_listener, event: preUpdate, lazy: true } # ================================================================================ # FORMS # ================================================================================ # form type to edit user roles App\Form\Type\UserRoleType: class: App\Form\Type\UserRoleType arguments: ["%security.role_hierarchy.roles%"] tags: - { name: form.type } App\Form\Extension\DocumentationLinkExtension: tags: - { name: form.type_extension, extended_type: Symfony\Component\Form\Extension\Core\Type\FormType } # ================================================================================ # THEME # ================================================================================ App\Twig\Extensions: arguments: $locales: "%app_locales%" App\Twig\DateExtensions: arguments: $dateSettings: "%kimai.languages%" KevinPapst\AdminLTEBundle\Helper\ContextHelper: alias: admin_lte_theme.context_helper # ================================================================================ # TIMESHEET RECORD CALCULATOR # ================================================================================ App\Timesheet\Calculator\DurationCalculator: arguments: ["%kimai.timesheet.rounding%"] App\Timesheet\Calculator\RateCalculator: arguments: ["%kimai.timesheet.rates%"] # ================================================================================ # REPOSITORIES # ================================================================================ App\Repository\UserRepository: class: Doctrine\ORM\EntityRepository factory: ['@doctrine.orm.entity_manager', getRepository] arguments: ['App\Entity\User'] App\Repository\ActivityRepository: class: Doctrine\ORM\EntityRepository factory: ['@doctrine.orm.entity_manager', getRepository] arguments: ['App\Entity\Activity'] App\Repository\ProjectRepository: class: Doctrine\ORM\EntityRepository factory: ['@doctrine.orm.entity_manager', getRepository] arguments: ['App\Entity\Project'] App\Repository\CustomerRepository: class: Doctrine\ORM\EntityRepository factory: ['@doctrine.orm.entity_manager', getRepository] arguments: ['App\Entity\Customer']