├── .env ├── .env.test ├── .gitignore ├── README.md ├── bin ├── console └── phpunit ├── composer.json ├── composer.lock ├── config ├── bootstrap.php ├── bundles.php ├── packages │ ├── cache.yaml │ ├── dev │ │ ├── debug.yaml │ │ └── web_profiler.yaml │ ├── doctrine.yaml │ ├── doctrine_migrations.yaml │ ├── framework.yaml │ ├── mailer.yaml │ ├── prod │ │ └── routing.yaml │ ├── routing.yaml │ ├── security.yaml │ ├── sensio_framework_extra.yaml │ ├── test │ │ ├── framework.yaml │ │ ├── twig.yaml │ │ ├── validator.yaml │ │ └── web_profiler.yaml │ ├── translation.yaml │ ├── twig.yaml │ └── validator.yaml ├── preload.php ├── routes.yaml ├── routes │ ├── annotations.yaml │ └── dev │ │ ├── framework.yaml │ │ └── web_profiler.yaml └── services.yaml ├── migrations └── .gitignore ├── phpunit.xml.dist ├── public └── index.php ├── src ├── Controller │ └── .gitignore └── Kernel.php ├── symfony.lock ├── templates └── base.html.twig ├── tests └── bootstrap.php └── translations └── .gitignore /.env: -------------------------------------------------------------------------------- 1 | # In all environments, the following files are loaded if they exist, 2 | # the latter taking precedence over the former: 3 | # 4 | # * .env contains default values for the environment variables needed by the app 5 | # * .env.local uncommitted file with local overrides 6 | # * .env.$APP_ENV committed environment-specific defaults 7 | # * .env.$APP_ENV.local uncommitted environment-specific overrides 8 | # 9 | # Real environment variables win over .env filecs. 10 | # 11 | # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. 12 | # 13 | # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). 14 | # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration 15 | 16 | ###> symfony/framework-bundle ### 17 | APP_ENV=dev 18 | APP_SECRET=673acc34e9170b1485bcc88ece028c28 19 | #TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 20 | #TRUSTED_HOSTS='^(localhost|example\.com)$' 21 | ###< symfony/framework-bundle ### 22 | 23 | ###> symfony/mailer ### 24 | # MAILER_DSN=smtp://localhost 25 | ###< symfony/mailer ### 26 | DATABASE_URL="mysql://root:@127.0.0.1:3306/db_name?serverVersion=5.7" 27 | -------------------------------------------------------------------------------- /.env.test: -------------------------------------------------------------------------------- 1 | # define your env variables for the test env here 2 | KERNEL_CLASS='App\Kernel' 3 | APP_SECRET='$ecretf0rt3st' 4 | SYMFONY_DEPRECATIONS_HELPER=999999 5 | PANTHER_APP_ENV=panther 6 | PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | ###> symfony/framework-bundle ### 3 | /.env.local 4 | /.env.local.php 5 | /.env.*.local 6 | /config/secrets/prod/prod.decrypt.private.php 7 | /public/bundles/ 8 | /var/ 9 | /vendor/ 10 | ###< symfony/framework-bundle ### 11 | 12 | ###> symfony/phpunit-bridge ### 13 | .phpunit.result.cache 14 | /phpunit.xml 15 | ###< symfony/phpunit-bridge ### 16 | 17 | ###> phpunit/phpunit ### 18 | /phpunit.xml 19 | .phpunit.result.cache 20 | ###< phpunit/phpunit ### 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #

👋 Welcome to Symfony PHP FrameWork

2 | ## ⛔Requirements: PHP7 3 | ## :wrench: Installation & Usage 4 | 1. git clone https://github.com/esprit-upweb/FirstProject.git 5 | 2. composer install 6 | 3. Add Entity Folder(src/Entity) 7 | -------------------------------------------------------------------------------- /bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | getParameterOption(['--env', '-e'], null, true)) { 23 | putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env); 24 | } 25 | 26 | if ($input->hasParameterOption('--no-debug', true)) { 27 | putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0'); 28 | } 29 | 30 | require dirname(__DIR__).'/config/bootstrap.php'; 31 | 32 | if ($_SERVER['APP_DEBUG']) { 33 | umask(0000); 34 | 35 | if (class_exists(Debug::class)) { 36 | Debug::enable(); 37 | } 38 | } 39 | 40 | $kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); 41 | $application = new Application($kernel); 42 | $application->run($input); 43 | -------------------------------------------------------------------------------- /bin/phpunit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | =7.1.3", 8 | "ext-ctype": "*", 9 | "ext-iconv": "*", 10 | "doctrine/annotations": "^1.0", 11 | "doctrine/doctrine-bundle": "^2.5", 12 | "doctrine/doctrine-migrations-bundle": "^3.2", 13 | "doctrine/orm": "^2.11", 14 | "phpdocumentor/reflection-docblock": "^5.3", 15 | "sensio/framework-extra-bundle": "^5.1", 16 | "symfony/asset": "4.4.*", 17 | "symfony/console": "4.4.*", 18 | "symfony/dotenv": "4.4.*", 19 | "symfony/expression-language": "4.4.*", 20 | "symfony/flex": "^1.3.1", 21 | "symfony/form": "4.4.*", 22 | "symfony/framework-bundle": "4.4.*", 23 | "symfony/http-client": "4.4.*", 24 | "symfony/intl": "4.4.*", 25 | "symfony/mailer": "4.4.*", 26 | "symfony/monolog-bundle": "^3.1", 27 | "symfony/process": "4.4.*", 28 | "symfony/property-access": "4.4.*", 29 | "symfony/property-info": "4.4.*", 30 | "symfony/proxy-manager-bridge": "4.4.*", 31 | "symfony/security-bundle": "4.4.*", 32 | "symfony/serializer": "4.4.*", 33 | "symfony/translation": "4.4.*", 34 | "symfony/twig-bundle": "4.4.*", 35 | "symfony/validator": "4.4.*", 36 | "symfony/web-link": "4.4.*", 37 | "symfony/yaml": "4.4.*", 38 | "twig/extra-bundle": "^2.12|^3.0", 39 | "twig/twig": "^2.12|^3.0" 40 | }, 41 | "require-dev": { 42 | "phpunit/phpunit": "^9.5", 43 | "symfony/browser-kit": "4.4.*", 44 | "symfony/css-selector": "4.4.*", 45 | "symfony/debug-bundle": "4.4.*", 46 | "symfony/maker-bundle": "^1.0", 47 | "symfony/phpunit-bridge": "^6.0", 48 | "symfony/stopwatch": "4.4.*", 49 | "symfony/web-profiler-bundle": "4.4.*" 50 | }, 51 | "config": { 52 | "allow-plugins": { 53 | "composer/package-versions-deprecated": true, 54 | "symfony/flex": true 55 | }, 56 | "preferred-install": { 57 | "*": "dist" 58 | }, 59 | "sort-packages": true 60 | }, 61 | "autoload": { 62 | "psr-4": { 63 | "App\\": "src/" 64 | } 65 | }, 66 | "autoload-dev": { 67 | "psr-4": { 68 | "App\\Tests\\": "tests/" 69 | } 70 | }, 71 | "replace": { 72 | "paragonie/random_compat": "2.*", 73 | "symfony/polyfill-ctype": "*", 74 | "symfony/polyfill-iconv": "*", 75 | "symfony/polyfill-php71": "*", 76 | "symfony/polyfill-php70": "*", 77 | "symfony/polyfill-php56": "*" 78 | }, 79 | "scripts": { 80 | "auto-scripts": { 81 | "cache:clear": "symfony-cmd", 82 | "assets:install %PUBLIC_DIR%": "symfony-cmd" 83 | }, 84 | "post-install-cmd": [ 85 | "@auto-scripts" 86 | ], 87 | "post-update-cmd": [ 88 | "@auto-scripts" 89 | ] 90 | }, 91 | "conflict": { 92 | "symfony/symfony": "*" 93 | }, 94 | "extra": { 95 | "symfony": { 96 | "allow-contrib": false, 97 | "require": "4.4.*" 98 | } 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /config/bootstrap.php: -------------------------------------------------------------------------------- 1 | =1.2) 13 | if (is_array($env = @include dirname(__DIR__).'/.env.local.php') && (!isset($env['APP_ENV']) || ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env['APP_ENV']) === $env['APP_ENV'])) { 14 | (new Dotenv(false))->populate($env); 15 | } else { 16 | // load all the .env files 17 | (new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env'); 18 | } 19 | 20 | $_SERVER += $_ENV; 21 | $_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; 22 | $_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; 23 | $_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0'; 24 | -------------------------------------------------------------------------------- /config/bundles.php: -------------------------------------------------------------------------------- 1 | ['all' => true], 5 | Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], 6 | Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], 7 | Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], 8 | Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true], 9 | Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], 10 | Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], 11 | Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], 12 | Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], 13 | Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], 14 | ]; 15 | -------------------------------------------------------------------------------- /config/packages/cache.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | cache: 3 | # Unique name of your app: used to compute stable namespaces for cache keys. 4 | #prefix_seed: your_vendor_name/app_name 5 | 6 | # The "app" cache stores to the filesystem by default. 7 | # The data in this cache should persist between deploys. 8 | # Other options include: 9 | 10 | # Redis 11 | #app: cache.adapter.redis 12 | #default_redis_provider: redis://localhost 13 | 14 | # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) 15 | #app: cache.adapter.apcu 16 | 17 | # Namespaced pools use the above "app" backend by default 18 | #pools: 19 | #my.dedicated.cache: null 20 | -------------------------------------------------------------------------------- /config/packages/dev/debug.yaml: -------------------------------------------------------------------------------- 1 | debug: 2 | # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. 3 | # See the "server:dump" command to start a new server. 4 | dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" 5 | -------------------------------------------------------------------------------- /config/packages/dev/web_profiler.yaml: -------------------------------------------------------------------------------- 1 | web_profiler: 2 | toolbar: true 3 | intercept_redirects: false 4 | 5 | framework: 6 | profiler: { only_exceptions: false } 7 | -------------------------------------------------------------------------------- /config/packages/doctrine.yaml: -------------------------------------------------------------------------------- 1 | doctrine: 2 | dbal: 3 | url: '%env(resolve:DATABASE_URL)%' 4 | 5 | # IMPORTANT: You MUST configure your server version, 6 | # either here or in the DATABASE_URL env var (see .env file) 7 | #server_version: '13' 8 | orm: 9 | auto_generate_proxy_classes: true 10 | naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware 11 | auto_mapping: true 12 | mappings: 13 | App: 14 | is_bundle: false 15 | dir: '%kernel.project_dir%/src/Entity' 16 | prefix: 'App\Entity' 17 | alias: App 18 | -------------------------------------------------------------------------------- /config/packages/doctrine_migrations.yaml: -------------------------------------------------------------------------------- 1 | doctrine_migrations: 2 | migrations_paths: 3 | # namespace is arbitrary but should be different from App\Migrations 4 | # as migrations classes should NOT be autoloaded 5 | 'DoctrineMigrations': '%kernel.project_dir%/migrations' 6 | enable_profiler: '%kernel.debug%' 7 | -------------------------------------------------------------------------------- /config/packages/framework.yaml: -------------------------------------------------------------------------------- 1 | # see https://symfony.com/doc/current/reference/configuration/framework.html 2 | framework: 3 | secret: '%env(APP_SECRET)%' 4 | #csrf_protection: true 5 | #http_method_override: true 6 | 7 | # Enables session support. Note that the session will ONLY be started if you read or write from it. 8 | # Remove or comment this section to explicitly disable session support. 9 | session: 10 | handler_id: null 11 | cookie_secure: auto 12 | cookie_samesite: lax 13 | 14 | #esi: true 15 | #fragments: true 16 | php_errors: 17 | log: true 18 | -------------------------------------------------------------------------------- /config/packages/mailer.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | mailer: 3 | dsn: '%env(MAILER_DSN)%' 4 | -------------------------------------------------------------------------------- /config/packages/prod/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | strict_requirements: null 4 | -------------------------------------------------------------------------------- /config/packages/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | utf8: true 4 | -------------------------------------------------------------------------------- /config/packages/security.yaml: -------------------------------------------------------------------------------- 1 | security: 2 | encoders: 3 | App\Entity\User: 4 | algorithm: auto 5 | 6 | # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers 7 | providers: 8 | # used to reload user from session & other features (e.g. switch_user) 9 | app_user_provider: 10 | entity: 11 | class: App\Entity\User 12 | property: email 13 | firewalls: 14 | dev: 15 | pattern: ^/(_(profiler|wdt)|css|images|js)/ 16 | security: false 17 | main: 18 | anonymous: lazy 19 | provider: app_user_provider 20 | 21 | # activate different ways to authenticate 22 | # https://symfony.com/doc/current/security.html#firewalls-authentication 23 | 24 | # https://symfony.com/doc/current/security/impersonating_user.html 25 | # switch_user: true 26 | 27 | # Easy way to control access for large sections of your site 28 | # Note: Only the *first* access control that matches will be used 29 | access_control: 30 | # - { path: ^/admin, roles: ROLE_ADMIN } 31 | # - { path: ^/profile, roles: ROLE_USER } 32 | -------------------------------------------------------------------------------- /config/packages/sensio_framework_extra.yaml: -------------------------------------------------------------------------------- 1 | sensio_framework_extra: 2 | router: 3 | annotations: false 4 | -------------------------------------------------------------------------------- /config/packages/test/framework.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | test: true 3 | session: 4 | storage_id: session.storage.mock_file 5 | -------------------------------------------------------------------------------- /config/packages/test/twig.yaml: -------------------------------------------------------------------------------- 1 | twig: 2 | strict_variables: true 3 | -------------------------------------------------------------------------------- /config/packages/test/validator.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | validation: 3 | not_compromised_password: false 4 | -------------------------------------------------------------------------------- /config/packages/test/web_profiler.yaml: -------------------------------------------------------------------------------- 1 | web_profiler: 2 | toolbar: false 3 | intercept_redirects: false 4 | 5 | framework: 6 | profiler: { collect: false } 7 | -------------------------------------------------------------------------------- /config/packages/translation.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | default_locale: en 3 | translator: 4 | default_path: '%kernel.project_dir%/translations' 5 | fallbacks: 6 | - en 7 | -------------------------------------------------------------------------------- /config/packages/twig.yaml: -------------------------------------------------------------------------------- 1 | twig: 2 | default_path: '%kernel.project_dir%/templates' 3 | debug: '%kernel.debug%' 4 | strict_variables: '%kernel.debug%' 5 | exception_controller: null 6 | -------------------------------------------------------------------------------- /config/packages/validator.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | validation: 3 | email_validation_mode: html5 4 | 5 | # Enables validator auto-mapping support. 6 | # For instance, basic validation constraints will be inferred from Doctrine's metadata. 7 | #auto_mapping: 8 | # App\Entity\: [] 9 | -------------------------------------------------------------------------------- /config/preload.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | tests 23 | 24 | 25 | 26 | 27 | 28 | src 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 42 | 43 | -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | handle($request); 26 | $response->send(); 27 | $kernel->terminate($request, $response); 28 | -------------------------------------------------------------------------------- /src/Controller/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhamedHabib/FirstProject/9d3fbe0ca43afd52f1efa11d334557e6501edfe1/src/Controller/.gitignore -------------------------------------------------------------------------------- /src/Kernel.php: -------------------------------------------------------------------------------- 1 | getProjectDir().'/config/bundles.php'; 21 | foreach ($contents as $class => $envs) { 22 | if ($envs[$this->environment] ?? $envs['all'] ?? false) { 23 | yield new $class(); 24 | } 25 | } 26 | } 27 | 28 | public function getProjectDir(): string 29 | { 30 | return \dirname(__DIR__); 31 | } 32 | 33 | protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void 34 | { 35 | $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); 36 | $container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400 || $this->debug); 37 | $container->setParameter('container.dumper.inline_factories', true); 38 | $confDir = $this->getProjectDir().'/config'; 39 | 40 | $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); 41 | $loader->load($confDir.'/{packages}/'.$this->environment.'/*'.self::CONFIG_EXTS, 'glob'); 42 | $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); 43 | $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); 44 | } 45 | 46 | protected function configureRoutes(RouteCollectionBuilder $routes): void 47 | { 48 | $confDir = $this->getProjectDir().'/config'; 49 | 50 | $routes->import($confDir.'/{routes}/'.$this->environment.'/*'.self::CONFIG_EXTS, '/', 'glob'); 51 | $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); 52 | $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /symfony.lock: -------------------------------------------------------------------------------- 1 | { 2 | "doctrine/annotations": { 3 | "version": "1.13", 4 | "recipe": { 5 | "repo": "github.com/symfony/recipes", 6 | "branch": "master", 7 | "version": "1.0", 8 | "ref": "a2759dd6123694c8d901d0ec80006e044c2e6457" 9 | }, 10 | "files": [ 11 | "./config/routes/annotations.yaml" 12 | ] 13 | }, 14 | "doctrine/cache": { 15 | "version": "2.1.1" 16 | }, 17 | "doctrine/collections": { 18 | "version": "1.6.8" 19 | }, 20 | "doctrine/common": { 21 | "version": "3.2.2" 22 | }, 23 | "doctrine/dbal": { 24 | "version": "3.3.2" 25 | }, 26 | "doctrine/deprecations": { 27 | "version": "v0.5.3" 28 | }, 29 | "doctrine/doctrine-migrations-bundle": { 30 | "version": "3.2", 31 | "recipe": { 32 | "repo": "github.com/symfony/recipes", 33 | "branch": "master", 34 | "version": "3.1", 35 | "ref": "ee609429c9ee23e22d6fa5728211768f51ed2818" 36 | }, 37 | "files": [ 38 | "./config/packages/doctrine_migrations.yaml", 39 | "./migrations/.gitignore" 40 | ] 41 | }, 42 | "doctrine/event-manager": { 43 | "version": "1.1.1" 44 | }, 45 | "doctrine/inflector": { 46 | "version": "2.0.4" 47 | }, 48 | "doctrine/instantiator": { 49 | "version": "1.4.0" 50 | }, 51 | "doctrine/lexer": { 52 | "version": "1.2.2" 53 | }, 54 | "doctrine/migrations": { 55 | "version": "3.4.1" 56 | }, 57 | "doctrine/orm": { 58 | "version": "2.11.1" 59 | }, 60 | "doctrine/persistence": { 61 | "version": "2.3.0" 62 | }, 63 | "doctrine/sql-formatter": { 64 | "version": "1.1.2" 65 | }, 66 | "egulias/email-validator": { 67 | "version": "3.1.2" 68 | }, 69 | "friendsofphp/proxy-manager-lts": { 70 | "version": "v1.0.5" 71 | }, 72 | "laminas/laminas-code": { 73 | "version": "4.5.1" 74 | }, 75 | "monolog/monolog": { 76 | "version": "1.26.1" 77 | }, 78 | "myclabs/deep-copy": { 79 | "version": "1.10.2" 80 | }, 81 | "nikic/php-parser": { 82 | "version": "v4.13.2" 83 | }, 84 | "phar-io/manifest": { 85 | "version": "2.0.3" 86 | }, 87 | "phar-io/version": { 88 | "version": "3.1.1" 89 | }, 90 | "phpdocumentor/reflection-common": { 91 | "version": "2.2.0" 92 | }, 93 | "phpdocumentor/reflection-docblock": { 94 | "version": "5.3.0" 95 | }, 96 | "phpdocumentor/type-resolver": { 97 | "version": "1.6.0" 98 | }, 99 | "phpspec/prophecy": { 100 | "version": "v1.15.0" 101 | }, 102 | "phpunit/php-code-coverage": { 103 | "version": "9.2.10" 104 | }, 105 | "phpunit/php-file-iterator": { 106 | "version": "3.0.6" 107 | }, 108 | "phpunit/php-invoker": { 109 | "version": "3.1.1" 110 | }, 111 | "phpunit/php-text-template": { 112 | "version": "2.0.4" 113 | }, 114 | "phpunit/php-timer": { 115 | "version": "5.0.3" 116 | }, 117 | "phpunit/phpunit": { 118 | "version": "9.5", 119 | "recipe": { 120 | "repo": "github.com/symfony/recipes", 121 | "branch": "master", 122 | "version": "9.3", 123 | "ref": "a6249a6c4392e9169b87abf93225f7f9f59025e6" 124 | }, 125 | "files": [ 126 | "./.env.test", 127 | "./phpunit.xml.dist", 128 | "./tests/bootstrap.php" 129 | ] 130 | }, 131 | "psr/cache": { 132 | "version": "1.0.1" 133 | }, 134 | "psr/container": { 135 | "version": "1.1.2" 136 | }, 137 | "psr/link": { 138 | "version": "1.0.0" 139 | }, 140 | "psr/log": { 141 | "version": "1.1.4" 142 | }, 143 | "sebastian/cli-parser": { 144 | "version": "1.0.1" 145 | }, 146 | "sebastian/code-unit": { 147 | "version": "1.0.8" 148 | }, 149 | "sebastian/code-unit-reverse-lookup": { 150 | "version": "2.0.3" 151 | }, 152 | "sebastian/comparator": { 153 | "version": "4.0.6" 154 | }, 155 | "sebastian/complexity": { 156 | "version": "2.0.2" 157 | }, 158 | "sebastian/diff": { 159 | "version": "4.0.4" 160 | }, 161 | "sebastian/environment": { 162 | "version": "5.1.3" 163 | }, 164 | "sebastian/exporter": { 165 | "version": "4.0.4" 166 | }, 167 | "sebastian/global-state": { 168 | "version": "5.0.4" 169 | }, 170 | "sebastian/lines-of-code": { 171 | "version": "1.0.3" 172 | }, 173 | "sebastian/object-enumerator": { 174 | "version": "4.0.4" 175 | }, 176 | "sebastian/object-reflector": { 177 | "version": "2.0.4" 178 | }, 179 | "sebastian/recursion-context": { 180 | "version": "4.0.4" 181 | }, 182 | "sebastian/resource-operations": { 183 | "version": "3.0.3" 184 | }, 185 | "sebastian/type": { 186 | "version": "2.3.4" 187 | }, 188 | "sebastian/version": { 189 | "version": "3.0.2" 190 | }, 191 | "sensio/framework-extra-bundle": { 192 | "version": "5.6", 193 | "recipe": { 194 | "repo": "github.com/symfony/recipes", 195 | "branch": "master", 196 | "version": "5.2", 197 | "ref": "fb7e19da7f013d0d422fa9bce16f5c510e27609b" 198 | }, 199 | "files": [ 200 | "./config/packages/sensio_framework_extra.yaml" 201 | ] 202 | }, 203 | "symfony/asset": { 204 | "version": "v4.4.37" 205 | }, 206 | "symfony/browser-kit": { 207 | "version": "v4.4.37" 208 | }, 209 | "symfony/cache": { 210 | "version": "v4.4.37" 211 | }, 212 | "symfony/cache-contracts": { 213 | "version": "v2.5.0" 214 | }, 215 | "symfony/config": { 216 | "version": "v4.4.37" 217 | }, 218 | "symfony/console": { 219 | "version": "4.4", 220 | "recipe": { 221 | "repo": "github.com/symfony/recipes", 222 | "branch": "master", 223 | "version": "4.4", 224 | "ref": "fd5340d07d4c90504843b53da41525cf42e31f5c" 225 | }, 226 | "files": [ 227 | "./bin/console", 228 | "./config/bootstrap.php" 229 | ] 230 | }, 231 | "symfony/css-selector": { 232 | "version": "v4.4.37" 233 | }, 234 | "symfony/debug": { 235 | "version": "v4.4.37" 236 | }, 237 | "symfony/debug-bundle": { 238 | "version": "4.4", 239 | "recipe": { 240 | "repo": "github.com/symfony/recipes", 241 | "branch": "master", 242 | "version": "4.1", 243 | "ref": "0ce7a032d344fb7b661cd25d31914cd703ad445b" 244 | }, 245 | "files": [ 246 | "./config/packages/dev/debug.yaml" 247 | ] 248 | }, 249 | "symfony/dependency-injection": { 250 | "version": "v4.4.37" 251 | }, 252 | "symfony/deprecation-contracts": { 253 | "version": "v2.5.0" 254 | }, 255 | "symfony/doctrine-bridge": { 256 | "version": "v4.4.37" 257 | }, 258 | "symfony/dom-crawler": { 259 | "version": "v4.4.37" 260 | }, 261 | "symfony/dotenv": { 262 | "version": "v4.4.37" 263 | }, 264 | "symfony/error-handler": { 265 | "version": "v4.4.37" 266 | }, 267 | "symfony/event-dispatcher": { 268 | "version": "v4.4.37" 269 | }, 270 | "symfony/event-dispatcher-contracts": { 271 | "version": "v1.1.11" 272 | }, 273 | "symfony/expression-language": { 274 | "version": "v4.4.37" 275 | }, 276 | "symfony/filesystem": { 277 | "version": "v4.4.37" 278 | }, 279 | "symfony/finder": { 280 | "version": "v4.4.37" 281 | }, 282 | "symfony/flex": { 283 | "version": "1.18", 284 | "recipe": { 285 | "repo": "github.com/symfony/recipes", 286 | "branch": "master", 287 | "version": "1.0", 288 | "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" 289 | }, 290 | "files": [ 291 | "./.env" 292 | ] 293 | }, 294 | "symfony/form": { 295 | "version": "v4.4.37" 296 | }, 297 | "symfony/framework-bundle": { 298 | "version": "4.4", 299 | "recipe": { 300 | "repo": "github.com/symfony/recipes", 301 | "branch": "master", 302 | "version": "4.4", 303 | "ref": "24eb45d1355810154890460e6a05c0ca27318fe7" 304 | }, 305 | "files": [ 306 | "./config/bootstrap.php", 307 | "./config/packages/cache.yaml", 308 | "./config/packages/framework.yaml", 309 | "./config/packages/test/framework.yaml", 310 | "./config/preload.php", 311 | "./config/routes/dev/framework.yaml", 312 | "./config/services.yaml", 313 | "./public/index.php", 314 | "./src/Controller/.gitignore", 315 | "./src/Kernel.php" 316 | ] 317 | }, 318 | "symfony/http-client": { 319 | "version": "v4.4.37" 320 | }, 321 | "symfony/http-client-contracts": { 322 | "version": "v2.5.0" 323 | }, 324 | "symfony/http-foundation": { 325 | "version": "v4.4.37" 326 | }, 327 | "symfony/http-kernel": { 328 | "version": "v4.4.37" 329 | }, 330 | "symfony/inflector": { 331 | "version": "v4.4.37" 332 | }, 333 | "symfony/intl": { 334 | "version": "v4.4.37" 335 | }, 336 | "symfony/mailer": { 337 | "version": "4.4", 338 | "recipe": { 339 | "repo": "github.com/symfony/recipes", 340 | "branch": "master", 341 | "version": "4.3", 342 | "ref": "bbfc7e27257d3a3f12a6fb0a42540a42d9623a37" 343 | }, 344 | "files": [ 345 | "./config/packages/mailer.yaml" 346 | ] 347 | }, 348 | "symfony/maker-bundle": { 349 | "version": "1.36", 350 | "recipe": { 351 | "repo": "github.com/symfony/recipes", 352 | "branch": "master", 353 | "version": "1.0", 354 | "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" 355 | } 356 | }, 357 | "symfony/mime": { 358 | "version": "v4.4.37" 359 | }, 360 | "symfony/monolog-bridge": { 361 | "version": "v4.4.37" 362 | }, 363 | "symfony/options-resolver": { 364 | "version": "v4.4.37" 365 | }, 366 | "symfony/phpunit-bridge": { 367 | "version": "6.0", 368 | "recipe": { 369 | "repo": "github.com/symfony/recipes", 370 | "branch": "master", 371 | "version": "5.3", 372 | "ref": "97cb3dc7b0f39c7cfc4b7553504c9d7b7795de96" 373 | }, 374 | "files": [ 375 | "./.env.test", 376 | "./bin/phpunit", 377 | "./phpunit.xml.dist", 378 | "./tests/bootstrap.php" 379 | ] 380 | }, 381 | "symfony/polyfill-intl-icu": { 382 | "version": "v1.24.0" 383 | }, 384 | "symfony/polyfill-intl-idn": { 385 | "version": "v1.24.0" 386 | }, 387 | "symfony/polyfill-intl-normalizer": { 388 | "version": "v1.24.0" 389 | }, 390 | "symfony/polyfill-mbstring": { 391 | "version": "v1.24.0" 392 | }, 393 | "symfony/polyfill-php72": { 394 | "version": "v1.24.0" 395 | }, 396 | "symfony/polyfill-php73": { 397 | "version": "v1.24.0" 398 | }, 399 | "symfony/polyfill-php80": { 400 | "version": "v1.24.0" 401 | }, 402 | "symfony/polyfill-php81": { 403 | "version": "v1.24.0" 404 | }, 405 | "symfony/process": { 406 | "version": "v4.4.37" 407 | }, 408 | "symfony/property-access": { 409 | "version": "v4.4.37" 410 | }, 411 | "symfony/property-info": { 412 | "version": "v4.4.37" 413 | }, 414 | "symfony/proxy-manager-bridge": { 415 | "version": "v4.4.37" 416 | }, 417 | "symfony/routing": { 418 | "version": "4.4", 419 | "recipe": { 420 | "repo": "github.com/symfony/recipes", 421 | "branch": "master", 422 | "version": "4.2", 423 | "ref": "683dcb08707ba8d41b7e34adb0344bfd68d248a7" 424 | }, 425 | "files": [ 426 | "./config/packages/prod/routing.yaml", 427 | "./config/packages/routing.yaml", 428 | "./config/routes.yaml" 429 | ] 430 | }, 431 | "symfony/security-bundle": { 432 | "version": "4.4", 433 | "recipe": { 434 | "repo": "github.com/symfony/recipes", 435 | "branch": "master", 436 | "version": "4.4", 437 | "ref": "7b4408dc203049666fe23fabed23cbadc6d8440f" 438 | }, 439 | "files": [ 440 | "./config/packages/security.yaml" 441 | ] 442 | }, 443 | "symfony/security-core": { 444 | "version": "v4.4.37" 445 | }, 446 | "symfony/security-csrf": { 447 | "version": "v4.4.37" 448 | }, 449 | "symfony/security-guard": { 450 | "version": "v4.4.37" 451 | }, 452 | "symfony/security-http": { 453 | "version": "v4.4.37" 454 | }, 455 | "symfony/serializer": { 456 | "version": "v4.4.37" 457 | }, 458 | "symfony/service-contracts": { 459 | "version": "v2.5.0" 460 | }, 461 | "symfony/stopwatch": { 462 | "version": "v4.4.37" 463 | }, 464 | "symfony/translation": { 465 | "version": "4.4", 466 | "recipe": { 467 | "repo": "github.com/symfony/recipes", 468 | "branch": "master", 469 | "version": "3.3", 470 | "ref": "2ad9d2545bce8ca1a863e50e92141f0b9d87ffcd" 471 | }, 472 | "files": [ 473 | "./config/packages/translation.yaml", 474 | "./translations/.gitignore" 475 | ] 476 | }, 477 | "symfony/translation-contracts": { 478 | "version": "v2.5.0" 479 | }, 480 | "symfony/twig-bridge": { 481 | "version": "v4.4.37" 482 | }, 483 | "symfony/twig-bundle": { 484 | "version": "4.4", 485 | "recipe": { 486 | "repo": "github.com/symfony/recipes", 487 | "branch": "master", 488 | "version": "4.4", 489 | "ref": "73baff3f7b3cea12a73812a7cfd2c0924a9e250f" 490 | }, 491 | "files": [ 492 | "./config/packages/test/twig.yaml", 493 | "./config/packages/twig.yaml", 494 | "./templates/base.html.twig" 495 | ] 496 | }, 497 | "symfony/validator": { 498 | "version": "4.4", 499 | "recipe": { 500 | "repo": "github.com/symfony/recipes", 501 | "branch": "master", 502 | "version": "4.3", 503 | "ref": "3eb8df139ec05414489d55b97603c5f6ca0c44cb" 504 | }, 505 | "files": [ 506 | "./config/packages/test/validator.yaml", 507 | "./config/packages/validator.yaml" 508 | ] 509 | }, 510 | "symfony/var-dumper": { 511 | "version": "v4.4.37" 512 | }, 513 | "symfony/var-exporter": { 514 | "version": "v4.4.37" 515 | }, 516 | "symfony/web-link": { 517 | "version": "v4.4.37" 518 | }, 519 | "symfony/web-profiler-bundle": { 520 | "version": "4.4", 521 | "recipe": { 522 | "repo": "github.com/symfony/recipes", 523 | "branch": "master", 524 | "version": "3.3", 525 | "ref": "6bdfa1a95f6b2e677ab985cd1af2eae35d62e0f6" 526 | }, 527 | "files": [ 528 | "./config/packages/dev/web_profiler.yaml", 529 | "./config/packages/test/web_profiler.yaml", 530 | "./config/routes/dev/web_profiler.yaml" 531 | ] 532 | }, 533 | "symfony/yaml": { 534 | "version": "v4.4.37" 535 | }, 536 | "theseer/tokenizer": { 537 | "version": "1.2.1" 538 | }, 539 | "twig/extra-bundle": { 540 | "version": "v3.3.8" 541 | }, 542 | "twig/twig": { 543 | "version": "v3.3.8" 544 | }, 545 | "webmozart/assert": { 546 | "version": "1.10.0" 547 | } 548 | } 549 | -------------------------------------------------------------------------------- /templates/base.html.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% block title %}Welcome!{% endblock %} 6 | {# Run `composer require symfony/webpack-encore-bundle` 7 | and uncomment the following Encore helpers to start using Symfony UX #} 8 | {% block stylesheets %} 9 | {#{{ encore_entry_link_tags('app') }}#} 10 | {% endblock %} 11 | 12 | {% block javascripts %} 13 | {#{{ encore_entry_script_tags('app') }}#} 14 | {% endblock %} 15 | 16 | 17 | {% block body %}{% endblock %} 18 | 19 | 20 | -------------------------------------------------------------------------------- /tests/bootstrap.php: -------------------------------------------------------------------------------- 1 | bootEnv(dirname(__DIR__).'/.env'); 11 | } 12 | -------------------------------------------------------------------------------- /translations/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MuhamedHabib/FirstProject/9d3fbe0ca43afd52f1efa11d334557e6501edfe1/translations/.gitignore --------------------------------------------------------------------------------