# In all environments, the following files are loaded if they exist, | |||||
# the latter taking precedence over the former: | |||||
# | |||||
# * .env contains default values for the environment variables needed by the app | |||||
# * .env.local uncommitted file with local overrides | |||||
# * .env.$APP_ENV committed environment-specific defaults | |||||
# * .env.$APP_ENV.local uncommitted environment-specific overrides | |||||
# | |||||
# Real environment variables win over .env files. | |||||
# | |||||
# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. | |||||
# | |||||
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). | |||||
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration | |||||
###> symfony/framework-bundle ### | |||||
APP_ENV=dev | |||||
APP_SECRET=555bc2aee588a05641d07ab10b081636 | |||||
###< symfony/framework-bundle ### | |||||
###> symfony/mailer ### | |||||
# MAILER_DSN=smtp://localhost | |||||
###< symfony/mailer ### | |||||
###> doctrine/doctrine-bundle ### | |||||
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url | |||||
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml | |||||
# | |||||
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" | |||||
# DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7" | |||||
DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8" | |||||
###< doctrine/doctrine-bundle ### |
# define your env variables for the test env here | |||||
KERNEL_CLASS='App\Kernel' | |||||
APP_SECRET='$ecretf0rt3st' | |||||
SYMFONY_DEPRECATIONS_HELPER=999999 | |||||
PANTHER_APP_ENV=panther | |||||
PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots |
###> symfony/framework-bundle ### | |||||
/.env.local | |||||
/.env.local.php | |||||
/.env.*.local | |||||
/config/secrets/prod/prod.decrypt.private.php | |||||
/public/bundles/ | |||||
/var/ | |||||
/vendor/ | |||||
###< symfony/framework-bundle ### | |||||
###> symfony/phpunit-bridge ### | |||||
.phpunit | |||||
.phpunit.result.cache | |||||
/phpunit.xml | |||||
###< symfony/phpunit-bridge ### |
#!/usr/bin/env php | |||||
<?php | |||||
use App\Kernel; | |||||
use Symfony\Bundle\FrameworkBundle\Console\Application; | |||||
use Symfony\Component\Console\Input\ArgvInput; | |||||
use Symfony\Component\Dotenv\Dotenv; | |||||
use Symfony\Component\ErrorHandler\Debug; | |||||
if (!in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) { | |||||
echo 'Warning: The console should be invoked via the CLI version of PHP, not the '.PHP_SAPI.' SAPI'.PHP_EOL; | |||||
} | |||||
set_time_limit(0); | |||||
require dirname(__DIR__).'/vendor/autoload.php'; | |||||
if (!class_exists(Application::class) || !class_exists(Dotenv::class)) { | |||||
throw new LogicException('You need to add "symfony/framework-bundle" and "symfony/dotenv" as Composer dependencies.'); | |||||
} | |||||
$input = new ArgvInput(); | |||||
if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) { | |||||
putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env); | |||||
} | |||||
if ($input->hasParameterOption('--no-debug', true)) { | |||||
putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0'); | |||||
} | |||||
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env'); | |||||
if ($_SERVER['APP_DEBUG']) { | |||||
umask(0000); | |||||
if (class_exists(Debug::class)) { | |||||
Debug::enable(); | |||||
} | |||||
} | |||||
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); | |||||
$application = new Application($kernel); | |||||
$application->run($input); |
#!/usr/bin/env php | |||||
<?php | |||||
if (!file_exists(dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit.php')) { | |||||
echo "Unable to find the `simple-phpunit.php` script in `vendor/symfony/phpunit-bridge/bin/`.\n"; | |||||
exit(1); | |||||
} | |||||
if (false === getenv('SYMFONY_PHPUNIT_DIR')) { | |||||
putenv('SYMFONY_PHPUNIT_DIR='.__DIR__.'/.phpunit'); | |||||
} | |||||
require dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit.php'; |
{ | |||||
"type": "project", | |||||
"license": "proprietary", | |||||
"minimum-stability": "dev", | |||||
"prefer-stable": true, | |||||
"require": { | |||||
"php": ">=7.2.5", | |||||
"ext-ctype": "*", | |||||
"ext-iconv": "*", | |||||
"composer/package-versions-deprecated": "1.11.99.2", | |||||
"doctrine/annotations": "^1.0", | |||||
"doctrine/doctrine-bundle": "^2.3", | |||||
"doctrine/doctrine-migrations-bundle": "^3.1", | |||||
"doctrine/orm": "^2.8", | |||||
"phpdocumentor/reflection-docblock": "^5.2", | |||||
"sensio/framework-extra-bundle": "^5.1", | |||||
"symfony/asset": "5.2.*", | |||||
"symfony/console": "5.2.*", | |||||
"symfony/dotenv": "5.2.*", | |||||
"symfony/expression-language": "5.2.*", | |||||
"symfony/flex": "^1.3.1", | |||||
"symfony/form": "5.2.*", | |||||
"symfony/framework-bundle": "5.2.*", | |||||
"symfony/http-client": "5.2.*", | |||||
"symfony/intl": "5.2.*", | |||||
"symfony/mailer": "5.2.*", | |||||
"symfony/mime": "5.2.*", | |||||
"symfony/monolog-bundle": "^3.1", | |||||
"symfony/notifier": "5.2.*", | |||||
"symfony/process": "5.2.*", | |||||
"symfony/property-access": "5.2.*", | |||||
"symfony/property-info": "5.2.*", | |||||
"symfony/proxy-manager-bridge": "5.2.*", | |||||
"symfony/security-bundle": "5.2.*", | |||||
"symfony/serializer": "5.2.*", | |||||
"symfony/string": "5.2.*", | |||||
"symfony/translation": "5.2.*", | |||||
"symfony/twig-bundle": "^5.2", | |||||
"symfony/validator": "5.2.*", | |||||
"symfony/web-link": "5.2.*", | |||||
"symfony/yaml": "5.2.*", | |||||
"twig/extra-bundle": "^2.12|^3.0", | |||||
"twig/twig": "^2.12|^3.0" | |||||
}, | |||||
"require-dev": { | |||||
"symfony/browser-kit": "^5.2", | |||||
"symfony/css-selector": "^5.2", | |||||
"symfony/debug-bundle": "^5.2", | |||||
"symfony/maker-bundle": "^1.0", | |||||
"symfony/phpunit-bridge": "^5.2", | |||||
"symfony/stopwatch": "^5.2", | |||||
"symfony/var-dumper": "^5.2", | |||||
"symfony/web-profiler-bundle": "^5.2" | |||||
}, | |||||
"config": { | |||||
"optimize-autoloader": true, | |||||
"preferred-install": { | |||||
"*": "dist" | |||||
}, | |||||
"sort-packages": true | |||||
}, | |||||
"autoload": { | |||||
"psr-4": { | |||||
"App\\": "src/" | |||||
} | |||||
}, | |||||
"autoload-dev": { | |||||
"psr-4": { | |||||
"App\\Tests\\": "tests/" | |||||
} | |||||
}, | |||||
"replace": { | |||||
"symfony/polyfill-ctype": "*", | |||||
"symfony/polyfill-iconv": "*", | |||||
"symfony/polyfill-php72": "*" | |||||
}, | |||||
"scripts": { | |||||
"auto-scripts": { | |||||
"cache:clear": "symfony-cmd", | |||||
"assets:install %PUBLIC_DIR%": "symfony-cmd" | |||||
}, | |||||
"post-install-cmd": [ | |||||
"@auto-scripts" | |||||
], | |||||
"post-update-cmd": [ | |||||
"@auto-scripts" | |||||
] | |||||
}, | |||||
"conflict": { | |||||
"symfony/symfony": "*" | |||||
}, | |||||
"extra": { | |||||
"symfony": { | |||||
"allow-contrib": false, | |||||
"require": "5.2.*" | |||||
} | |||||
} | |||||
} |
<?php | |||||
return [ | |||||
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], | |||||
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], | |||||
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], | |||||
Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], | |||||
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], | |||||
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true], | |||||
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], | |||||
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], | |||||
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], | |||||
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], | |||||
Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], | |||||
]; |
framework: | |||||
cache: | |||||
# Unique name of your app: used to compute stable namespaces for cache keys. | |||||
#prefix_seed: your_vendor_name/app_name | |||||
# The "app" cache stores to the filesystem by default. | |||||
# The data in this cache should persist between deploys. | |||||
# Other options include: | |||||
# Redis | |||||
#app: cache.adapter.redis | |||||
#default_redis_provider: redis://localhost | |||||
# APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) | |||||
#app: cache.adapter.apcu | |||||
# Namespaced pools use the above "app" backend by default | |||||
#pools: | |||||
#my.dedicated.cache: null |
debug: | |||||
# Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. | |||||
# See the "server:dump" command to start a new server. | |||||
dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" |
monolog: | |||||
handlers: | |||||
main: | |||||
type: stream | |||||
path: "%kernel.logs_dir%/%kernel.environment%.log" | |||||
level: debug | |||||
channels: ["!event"] | |||||
# uncomment to get logging in your browser | |||||
# you may have to allow bigger header sizes in your Web server configuration | |||||
#firephp: | |||||
# type: firephp | |||||
# level: info | |||||
#chromephp: | |||||
# type: chromephp | |||||
# level: info | |||||
console: | |||||
type: console | |||||
process_psr_3_messages: false | |||||
channels: ["!event", "!doctrine", "!console"] |
web_profiler: | |||||
toolbar: true | |||||
intercept_redirects: false | |||||
framework: | |||||
profiler: { only_exceptions: false } |
doctrine: | |||||
dbal: | |||||
url: '%env(resolve:DATABASE_URL)%' | |||||
# IMPORTANT: You MUST configure your server version, | |||||
# either here or in the DATABASE_URL env var (see .env file) | |||||
#server_version: '13' | |||||
orm: | |||||
auto_generate_proxy_classes: true | |||||
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware | |||||
auto_mapping: true | |||||
mappings: | |||||
App: | |||||
is_bundle: false | |||||
type: annotation | |||||
dir: '%kernel.project_dir%/src/Entity' | |||||
prefix: 'App\Entity' | |||||
alias: App |
doctrine_migrations: | |||||
migrations_paths: | |||||
# namespace is arbitrary but should be different from App\Migrations | |||||
# as migrations classes should NOT be autoloaded | |||||
'DoctrineMigrations': '%kernel.project_dir%/migrations' | |||||
enable_profiler: '%kernel.debug%' |
# see https://symfony.com/doc/current/reference/configuration/framework.html | |||||
framework: | |||||
secret: '%env(APP_SECRET)%' | |||||
#csrf_protection: true | |||||
#http_method_override: true | |||||
# Enables session support. Note that the session will ONLY be started if you read or write from it. | |||||
# Remove or comment this section to explicitly disable session support. | |||||
session: | |||||
handler_id: null | |||||
cookie_secure: auto | |||||
cookie_samesite: lax | |||||
#esi: true | |||||
#fragments: true | |||||
php_errors: | |||||
log: true |
framework: | |||||
mailer: | |||||
dsn: '%env(MAILER_DSN)%' |
framework: | |||||
notifier: | |||||
#chatter_transports: | |||||
# slack: '%env(SLACK_DSN)%' | |||||
# telegram: '%env(TELEGRAM_DSN)%' | |||||
#texter_transports: | |||||
# twilio: '%env(TWILIO_DSN)%' | |||||
# nexmo: '%env(NEXMO_DSN)%' | |||||
channel_policy: | |||||
# use chat/slack, chat/telegram, sms/twilio or sms/nexmo | |||||
urgent: ['email'] | |||||
high: ['email'] | |||||
medium: ['email'] | |||||
low: ['email'] | |||||
admin_recipients: | |||||
- { email: admin@example.com } |
# As of Symfony 5.1, deprecations are logged in the dedicated "deprecation" channel when it exists | |||||
#monolog: | |||||
# channels: [deprecation] | |||||
# handlers: | |||||
# deprecation: | |||||
# type: stream | |||||
# channels: [deprecation] | |||||
# path: php://stderr |
doctrine: | |||||
orm: | |||||
auto_generate_proxy_classes: false | |||||
metadata_cache_driver: | |||||
type: pool | |||||
pool: doctrine.system_cache_pool | |||||
query_cache_driver: | |||||
type: pool | |||||
pool: doctrine.system_cache_pool | |||||
result_cache_driver: | |||||
type: pool | |||||
pool: doctrine.result_cache_pool | |||||
framework: | |||||
cache: | |||||
pools: | |||||
doctrine.result_cache_pool: | |||||
adapter: cache.app | |||||
doctrine.system_cache_pool: | |||||
adapter: cache.system |
monolog: | |||||
handlers: | |||||
main: | |||||
type: fingers_crossed | |||||
action_level: error | |||||
handler: nested | |||||
excluded_http_codes: [404, 405] | |||||
buffer_size: 50 # How many messages should be saved? Prevent memory leaks | |||||
nested: | |||||
type: stream | |||||
path: php://stderr | |||||
level: debug | |||||
formatter: monolog.formatter.json | |||||
console: | |||||
type: console | |||||
process_psr_3_messages: false | |||||
channels: ["!event", "!doctrine"] |
framework: | |||||
router: | |||||
strict_requirements: null |
framework: | |||||
router: | |||||
utf8: true | |||||
# Configure how to generate URLs in non-HTTP contexts, such as CLI commands. | |||||
# See https://symfony.com/doc/current/routing.html#generating-urls-in-commands | |||||
#default_uri: http://localhost |
security: | |||||
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers | |||||
providers: | |||||
users_in_memory: { memory: null } | |||||
firewalls: | |||||
dev: | |||||
pattern: ^/(_(profiler|wdt)|css|images|js)/ | |||||
security: false | |||||
main: | |||||
anonymous: true | |||||
lazy: true | |||||
provider: users_in_memory | |||||
# activate different ways to authenticate | |||||
# https://symfony.com/doc/current/security.html#firewalls-authentication | |||||
# https://symfony.com/doc/current/security/impersonating_user.html | |||||
# switch_user: true | |||||
# Easy way to control access for large sections of your site | |||||
# Note: Only the *first* access control that matches will be used | |||||
access_control: | |||||
# - { path: ^/admin, roles: ROLE_ADMIN } | |||||
# - { path: ^/profile, roles: ROLE_USER } |
sensio_framework_extra: | |||||
router: | |||||
annotations: false |
doctrine: | |||||
dbal: | |||||
# "TEST_TOKEN" is typically set by ParaTest | |||||
dbname: 'main_test%env(default::TEST_TOKEN)%' |
framework: | |||||
test: true | |||||
session: | |||||
storage_id: session.storage.mock_file |
monolog: | |||||
handlers: | |||||
main: | |||||
type: fingers_crossed | |||||
action_level: error | |||||
handler: nested | |||||
excluded_http_codes: [404, 405] | |||||
channels: ["!event"] | |||||
nested: | |||||
type: stream | |||||
path: "%kernel.logs_dir%/%kernel.environment%.log" | |||||
level: debug |
twig: | |||||
strict_variables: true |
framework: | |||||
validation: | |||||
not_compromised_password: false |
web_profiler: | |||||
toolbar: false | |||||
intercept_redirects: false | |||||
framework: | |||||
profiler: { collect: false } |
framework: | |||||
default_locale: en | |||||
translator: | |||||
default_path: '%kernel.project_dir%/translations' | |||||
fallbacks: | |||||
- en |
twig: | |||||
default_path: '%kernel.project_dir%/templates' |
framework: | |||||
validation: | |||||
email_validation_mode: html5 | |||||
# Enables validator auto-mapping support. | |||||
# For instance, basic validation constraints will be inferred from Doctrine's metadata. | |||||
#auto_mapping: | |||||
# App\Entity\: [] |
<?php | |||||
if (file_exists(dirname(__DIR__).'/var/cache/prod/App_KernelProdContainer.preload.php')) { | |||||
require dirname(__DIR__).'/var/cache/prod/App_KernelProdContainer.preload.php'; | |||||
} |
#index: | |||||
# path: / | |||||
# controller: App\Controller\DefaultController::index |
controllers: | |||||
resource: ../../src/Controller/ | |||||
type: annotation | |||||
kernel: | |||||
resource: ../../src/Kernel.php | |||||
type: annotation |
_errors: | |||||
resource: '@FrameworkBundle/Resources/config/routing/errors.xml' | |||||
prefix: /_error |
web_profiler_wdt: | |||||
resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml' | |||||
prefix: /_wdt | |||||
web_profiler_profiler: | |||||
resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml' | |||||
prefix: /_profiler |
# This file is the entry point to configure your own services. | |||||
# Files in the packages/ subdirectory configure your dependencies. | |||||
# 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: | |||||
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. | |||||
# 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/DependencyInjection/' | |||||
- '../src/Entity/' | |||||
- '../src/Kernel.php' | |||||
- '../src/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'] | |||||
# add more service definitions when explicit configuration is needed | |||||
# please note that last definitions always *replace* previous ones |
<?xml version="1.0" encoding="UTF-8"?> | |||||
<!-- https://phpunit.readthedocs.io/en/latest/configuration.html --> | |||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||||
xsi:noNamespaceSchemaLocation="bin/.phpunit/phpunit.xsd" | |||||
backupGlobals="false" | |||||
colors="true" | |||||
bootstrap="tests/bootstrap.php" | |||||
> | |||||
<php> | |||||
<ini name="error_reporting" value="-1" /> | |||||
<server name="APP_ENV" value="test" force="true" /> | |||||
<server name="SHELL_VERBOSITY" value="-1" /> | |||||
<server name="SYMFONY_PHPUNIT_REMOVE" value="" /> | |||||
<server name="SYMFONY_PHPUNIT_VERSION" value="8.5" /> | |||||
</php> | |||||
<testsuites> | |||||
<testsuite name="Project Test Suite"> | |||||
<directory>tests</directory> | |||||
</testsuite> | |||||
</testsuites> | |||||
<filter> | |||||
<whitelist processUncoveredFilesFromWhitelist="true"> | |||||
<directory suffix=".php">src</directory> | |||||
</whitelist> | |||||
</filter> | |||||
<listeners> | |||||
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" /> | |||||
</listeners> | |||||
<!-- Run `composer require symfony/panther` before enabling this extension --> | |||||
<!-- | |||||
<extensions> | |||||
<extension class="Symfony\Component\Panther\ServerExtension" /> | |||||
</extensions> | |||||
--> | |||||
</phpunit> |
<?php | |||||
use App\Kernel; | |||||
use Symfony\Component\Dotenv\Dotenv; | |||||
use Symfony\Component\ErrorHandler\Debug; | |||||
use Symfony\Component\HttpFoundation\Request; | |||||
require dirname(__DIR__).'/vendor/autoload.php'; | |||||
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env'); | |||||
if ($_SERVER['APP_DEBUG']) { | |||||
umask(0000); | |||||
Debug::enable(); | |||||
} | |||||
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); | |||||
$request = Request::createFromGlobals(); | |||||
$response = $kernel->handle($request); | |||||
$response->send(); | |||||
$kernel->terminate($request, $response); |
<?php | |||||
namespace App; | |||||
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; | |||||
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; | |||||
use Symfony\Component\HttpKernel\Kernel as BaseKernel; | |||||
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; | |||||
class Kernel extends BaseKernel | |||||
{ | |||||
use MicroKernelTrait; | |||||
protected function configureContainer(ContainerConfigurator $container): void | |||||
{ | |||||
$container->import('../config/{packages}/*.yaml'); | |||||
$container->import('../config/{packages}/'.$this->environment.'/*.yaml'); | |||||
if (is_file(\dirname(__DIR__).'/config/services.yaml')) { | |||||
$container->import('../config/services.yaml'); | |||||
$container->import('../config/{services}_'.$this->environment.'.yaml'); | |||||
} elseif (is_file($path = \dirname(__DIR__).'/config/services.php')) { | |||||
(require $path)($container->withPath($path), $this); | |||||
} | |||||
} | |||||
protected function configureRoutes(RoutingConfigurator $routes): void | |||||
{ | |||||
$routes->import('../config/{routes}/'.$this->environment.'/*.yaml'); | |||||
$routes->import('../config/{routes}/*.yaml'); | |||||
if (is_file(\dirname(__DIR__).'/config/routes.yaml')) { | |||||
$routes->import('../config/routes.yaml'); | |||||
} elseif (is_file($path = \dirname(__DIR__).'/config/routes.php')) { | |||||
(require $path)($routes->withPath($path), $this); | |||||
} | |||||
} | |||||
} |
{ | |||||
"composer/package-versions-deprecated": { | |||||
"version": "1.11.99.2" | |||||
}, | |||||
"doctrine/annotations": { | |||||
"version": "1.0", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "1.0", | |||||
"ref": "a2759dd6123694c8d901d0ec80006e044c2e6457" | |||||
}, | |||||
"files": [ | |||||
"config/routes/annotations.yaml" | |||||
] | |||||
}, | |||||
"doctrine/cache": { | |||||
"version": "1.11.2" | |||||
}, | |||||
"doctrine/collections": { | |||||
"version": "1.6.7" | |||||
}, | |||||
"doctrine/common": { | |||||
"version": "3.1.2" | |||||
}, | |||||
"doctrine/dbal": { | |||||
"version": "2.13.1" | |||||
}, | |||||
"doctrine/deprecations": { | |||||
"version": "v0.5.3" | |||||
}, | |||||
"doctrine/doctrine-bundle": { | |||||
"version": "2.3", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "2.3", | |||||
"ref": "c9e656a395646ea4fad2bd3e2b3816028baf9026" | |||||
}, | |||||
"files": [ | |||||
"config/packages/doctrine.yaml", | |||||
"config/packages/prod/doctrine.yaml", | |||||
"config/packages/test/doctrine.yaml", | |||||
"src/Entity/.gitignore", | |||||
"src/Repository/.gitignore" | |||||
] | |||||
}, | |||||
"doctrine/doctrine-migrations-bundle": { | |||||
"version": "3.1", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "3.1", | |||||
"ref": "ee609429c9ee23e22d6fa5728211768f51ed2818" | |||||
}, | |||||
"files": [ | |||||
"config/packages/doctrine_migrations.yaml", | |||||
"migrations/.gitignore" | |||||
] | |||||
}, | |||||
"doctrine/event-manager": { | |||||
"version": "1.1.1" | |||||
}, | |||||
"doctrine/inflector": { | |||||
"version": "2.0.3" | |||||
}, | |||||
"doctrine/instantiator": { | |||||
"version": "1.4.0" | |||||
}, | |||||
"doctrine/lexer": { | |||||
"version": "1.2.1" | |||||
}, | |||||
"doctrine/migrations": { | |||||
"version": "3.1.2" | |||||
}, | |||||
"doctrine/orm": { | |||||
"version": "2.8.5" | |||||
}, | |||||
"doctrine/persistence": { | |||||
"version": "2.2.1" | |||||
}, | |||||
"doctrine/sql-formatter": { | |||||
"version": "1.1.1" | |||||
}, | |||||
"egulias/email-validator": { | |||||
"version": "3.1.1" | |||||
}, | |||||
"friendsofphp/proxy-manager-lts": { | |||||
"version": "v1.0.5" | |||||
}, | |||||
"laminas/laminas-code": { | |||||
"version": "4.3.0" | |||||
}, | |||||
"laminas/laminas-eventmanager": { | |||||
"version": "3.3.1" | |||||
}, | |||||
"laminas/laminas-zendframework-bridge": { | |||||
"version": "1.2.0" | |||||
}, | |||||
"monolog/monolog": { | |||||
"version": "2.2.0" | |||||
}, | |||||
"nikic/php-parser": { | |||||
"version": "v4.10.5" | |||||
}, | |||||
"phpdocumentor/reflection-common": { | |||||
"version": "2.2.0" | |||||
}, | |||||
"phpdocumentor/reflection-docblock": { | |||||
"version": "5.2.2" | |||||
}, | |||||
"phpdocumentor/type-resolver": { | |||||
"version": "1.4.0" | |||||
}, | |||||
"psr/cache": { | |||||
"version": "1.0.1" | |||||
}, | |||||
"psr/container": { | |||||
"version": "1.1.1" | |||||
}, | |||||
"psr/event-dispatcher": { | |||||
"version": "1.0.0" | |||||
}, | |||||
"psr/link": { | |||||
"version": "1.0.0" | |||||
}, | |||||
"psr/log": { | |||||
"version": "1.1.4" | |||||
}, | |||||
"sensio/framework-extra-bundle": { | |||||
"version": "5.2", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "5.2", | |||||
"ref": "fb7e19da7f013d0d422fa9bce16f5c510e27609b" | |||||
}, | |||||
"files": [ | |||||
"config/packages/sensio_framework_extra.yaml" | |||||
] | |||||
}, | |||||
"symfony/asset": { | |||||
"version": "v5.2.7" | |||||
}, | |||||
"symfony/browser-kit": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/cache": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/cache-contracts": { | |||||
"version": "v2.4.0" | |||||
}, | |||||
"symfony/config": { | |||||
"version": "v5.2.8" | |||||
}, | |||||
"symfony/console": { | |||||
"version": "5.1", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "5.1", | |||||
"ref": "c6d02bdfba9da13c22157520e32a602dbee8a75c" | |||||
}, | |||||
"files": [ | |||||
"bin/console" | |||||
] | |||||
}, | |||||
"symfony/css-selector": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/debug-bundle": { | |||||
"version": "4.1", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "4.1", | |||||
"ref": "0ce7a032d344fb7b661cd25d31914cd703ad445b" | |||||
}, | |||||
"files": [ | |||||
"config/packages/dev/debug.yaml" | |||||
] | |||||
}, | |||||
"symfony/debug-pack": { | |||||
"version": "v1.0.9" | |||||
}, | |||||
"symfony/dependency-injection": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/deprecation-contracts": { | |||||
"version": "v2.4.0" | |||||
}, | |||||
"symfony/doctrine-bridge": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/dom-crawler": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/dotenv": { | |||||
"version": "v5.2.4" | |||||
}, | |||||
"symfony/error-handler": { | |||||
"version": "v5.2.8" | |||||
}, | |||||
"symfony/event-dispatcher": { | |||||
"version": "v5.2.4" | |||||
}, | |||||
"symfony/event-dispatcher-contracts": { | |||||
"version": "v2.4.0" | |||||
}, | |||||
"symfony/expression-language": { | |||||
"version": "v5.2.7" | |||||
}, | |||||
"symfony/filesystem": { | |||||
"version": "v5.2.7" | |||||
}, | |||||
"symfony/finder": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/flex": { | |||||
"version": "1.0", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "1.0", | |||||
"ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" | |||||
}, | |||||
"files": [ | |||||
".env" | |||||
] | |||||
}, | |||||
"symfony/form": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/framework-bundle": { | |||||
"version": "5.2", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "5.2", | |||||
"ref": "6ec87563dcc85cd0c48856dcfbfc29610506d250" | |||||
}, | |||||
"files": [ | |||||
"config/packages/cache.yaml", | |||||
"config/packages/framework.yaml", | |||||
"config/packages/test/framework.yaml", | |||||
"config/preload.php", | |||||
"config/routes/dev/framework.yaml", | |||||
"config/services.yaml", | |||||
"public/index.php", | |||||
"src/Controller/.gitignore", | |||||
"src/Kernel.php" | |||||
] | |||||
}, | |||||
"symfony/http-client": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/http-client-contracts": { | |||||
"version": "v2.4.0" | |||||
}, | |||||
"symfony/http-foundation": { | |||||
"version": "v5.2.8" | |||||
}, | |||||
"symfony/http-kernel": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/intl": { | |||||
"version": "v5.2.7" | |||||
}, | |||||
"symfony/mailer": { | |||||
"version": "4.3", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "4.3", | |||||
"ref": "15658c2a0176cda2e7dba66276a2030b52bd81b2" | |||||
}, | |||||
"files": [ | |||||
"config/packages/mailer.yaml" | |||||
] | |||||
}, | |||||
"symfony/maker-bundle": { | |||||
"version": "1.0", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "1.0", | |||||
"ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" | |||||
} | |||||
}, | |||||
"symfony/mime": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/monolog-bridge": { | |||||
"version": "v5.2.7" | |||||
}, | |||||
"symfony/monolog-bundle": { | |||||
"version": "3.7", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "3.7", | |||||
"ref": "329f6a5ef2e7aa033f802be833ef8d1268dd0848" | |||||
}, | |||||
"files": [ | |||||
"config/packages/dev/monolog.yaml", | |||||
"config/packages/prod/deprecations.yaml", | |||||
"config/packages/prod/monolog.yaml", | |||||
"config/packages/test/monolog.yaml" | |||||
] | |||||
}, | |||||
"symfony/notifier": { | |||||
"version": "5.0", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "5.0", | |||||
"ref": "c31585e252b32fe0e1f30b1f256af553f4a06eb9" | |||||
}, | |||||
"files": [ | |||||
"config/packages/notifier.yaml" | |||||
] | |||||
}, | |||||
"symfony/options-resolver": { | |||||
"version": "v5.2.4" | |||||
}, | |||||
"symfony/orm-pack": { | |||||
"version": "v2.1.0" | |||||
}, | |||||
"symfony/phpunit-bridge": { | |||||
"version": "5.1", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "5.1", | |||||
"ref": "bf16921ef8309a81d9f046e9b6369c46bcbd031f" | |||||
}, | |||||
"files": [ | |||||
".env.test", | |||||
"bin/phpunit", | |||||
"phpunit.xml.dist", | |||||
"tests/bootstrap.php" | |||||
] | |||||
}, | |||||
"symfony/polyfill-intl-grapheme": { | |||||
"version": "v1.22.1" | |||||
}, | |||||
"symfony/polyfill-intl-icu": { | |||||
"version": "v1.22.1" | |||||
}, | |||||
"symfony/polyfill-intl-idn": { | |||||
"version": "v1.22.1" | |||||
}, | |||||
"symfony/polyfill-intl-normalizer": { | |||||
"version": "v1.22.1" | |||||
}, | |||||
"symfony/polyfill-mbstring": { | |||||
"version": "v1.22.1" | |||||
}, | |||||
"symfony/polyfill-php73": { | |||||
"version": "v1.22.1" | |||||
}, | |||||
"symfony/polyfill-php80": { | |||||
"version": "v1.22.1" | |||||
}, | |||||
"symfony/process": { | |||||
"version": "v5.2.7" | |||||
}, | |||||
"symfony/profiler-pack": { | |||||
"version": "v1.0.5" | |||||
}, | |||||
"symfony/property-access": { | |||||
"version": "v5.2.4" | |||||
}, | |||||
"symfony/property-info": { | |||||
"version": "v5.2.8" | |||||
}, | |||||
"symfony/proxy-manager-bridge": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/routing": { | |||||
"version": "5.1", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "5.1", | |||||
"ref": "b4f3e7c95e38b606eef467e8a42a8408fc460c43" | |||||
}, | |||||
"files": [ | |||||
"config/packages/prod/routing.yaml", | |||||
"config/packages/routing.yaml", | |||||
"config/routes.yaml" | |||||
] | |||||
}, | |||||
"symfony/security-bundle": { | |||||
"version": "5.1", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "5.1", | |||||
"ref": "0a4bae19389d3b9cba1ca0102e3b2bccea724603" | |||||
}, | |||||
"files": [ | |||||
"config/packages/security.yaml" | |||||
] | |||||
}, | |||||
"symfony/security-core": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/security-csrf": { | |||||
"version": "v5.2.7" | |||||
}, | |||||
"symfony/security-guard": { | |||||
"version": "v5.2.8" | |||||
}, | |||||
"symfony/security-http": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/serializer": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"symfony/serializer-pack": { | |||||
"version": "v1.0.4" | |||||
}, | |||||
"symfony/service-contracts": { | |||||
"version": "v2.4.0" | |||||
}, | |||||
"symfony/stopwatch": { | |||||
"version": "v5.2.7" | |||||
}, | |||||
"symfony/string": { | |||||
"version": "v5.2.8" | |||||
}, | |||||
"symfony/test-pack": { | |||||
"version": "v1.0.7" | |||||
}, | |||||
"symfony/translation": { | |||||
"version": "3.3", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "3.3", | |||||
"ref": "2ad9d2545bce8ca1a863e50e92141f0b9d87ffcd" | |||||
}, | |||||
"files": [ | |||||
"config/packages/translation.yaml", | |||||
"translations/.gitignore" | |||||
] | |||||
}, | |||||
"symfony/translation-contracts": { | |||||
"version": "v2.4.0" | |||||
}, | |||||
"symfony/twig-bridge": { | |||||
"version": "v5.2.8" | |||||
}, | |||||
"symfony/twig-bundle": { | |||||
"version": "5.0", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "5.0", | |||||
"ref": "fab9149bbaa4d5eca054ed93f9e1b66cc500895d" | |||||
}, | |||||
"files": [ | |||||
"config/packages/test/twig.yaml", | |||||
"config/packages/twig.yaml", | |||||
"templates/base.html.twig" | |||||
] | |||||
}, | |||||
"symfony/twig-pack": { | |||||
"version": "v1.0.1" | |||||
}, | |||||
"symfony/validator": { | |||||
"version": "4.3", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "4.3", | |||||
"ref": "d902da3e4952f18d3bf05aab29512eb61cabd869" | |||||
}, | |||||
"files": [ | |||||
"config/packages/test/validator.yaml", | |||||
"config/packages/validator.yaml" | |||||
] | |||||
}, | |||||
"symfony/var-dumper": { | |||||
"version": "v5.2.8" | |||||
}, | |||||
"symfony/var-exporter": { | |||||
"version": "v5.2.8" | |||||
}, | |||||
"symfony/web-link": { | |||||
"version": "v5.2.5" | |||||
}, | |||||
"symfony/web-profiler-bundle": { | |||||
"version": "3.3", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "3.3", | |||||
"ref": "6bdfa1a95f6b2e677ab985cd1af2eae35d62e0f6" | |||||
}, | |||||
"files": [ | |||||
"config/packages/dev/web_profiler.yaml", | |||||
"config/packages/test/web_profiler.yaml", | |||||
"config/routes/dev/web_profiler.yaml" | |||||
] | |||||
}, | |||||
"symfony/yaml": { | |||||
"version": "v5.2.9" | |||||
}, | |||||
"twig/extra-bundle": { | |||||
"version": "v3.3.1" | |||||
}, | |||||
"twig/twig": { | |||||
"version": "v3.3.2" | |||||
}, | |||||
"webmozart/assert": { | |||||
"version": "1.10.0" | |||||
} | |||||
} |
<!DOCTYPE html> | |||||
<html> | |||||
<head> | |||||
<meta charset="UTF-8"> | |||||
<title>{% block title %}Welcome!{% endblock %}</title> | |||||
{# Run `composer require symfony/webpack-encore-bundle` | |||||
and uncomment the following Encore helpers to start using Symfony UX #} | |||||
{% block stylesheets %} | |||||
{#{{ encore_entry_link_tags('app') }}#} | |||||
{% endblock %} | |||||
{% block javascripts %} | |||||
{#{{ encore_entry_script_tags('app') }}#} | |||||
{% endblock %} | |||||
</head> | |||||
<body> | |||||
{% block body %}{% endblock %} | |||||
</body> | |||||
</html> |
<?php | |||||
use Symfony\Component\Dotenv\Dotenv; | |||||
require dirname(__DIR__).'/vendor/autoload.php'; | |||||
if (file_exists(dirname(__DIR__).'/config/bootstrap.php')) { | |||||
require dirname(__DIR__).'/config/bootstrap.php'; | |||||
} elseif (method_exists(Dotenv::class, 'bootEnv')) { | |||||
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env'); | |||||
} |