├── .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
--------------------------------------------------------------------------------