├── .env.dist
├── .gitignore
├── README.md
├── assets
├── .gitignore
├── css
│ └── app.css
└── js
│ ├── Components
│ └── ItemCard.js
│ └── app.js
├── bin
└── console
├── composer.json
├── composer.lock
├── config
├── bundles.php
├── packages
│ ├── dev
│ │ └── routing.yaml
│ ├── framework.yaml
│ ├── routing.yaml
│ ├── test
│ │ └── framework.yaml
│ └── twig.yaml
├── routes.yaml
├── routes
│ ├── annotations.yaml
│ └── dev
│ │ └── twig.yaml
└── services.yaml
├── final-result.png
├── package.json
├── public
└── index.php
├── src
├── Controller
│ ├── .gitignore
│ └── DefaultController.php
└── Kernel.php
├── symfony.lock
├── templates
├── Default
│ └── index.html.twig
└── base.html.twig
├── webpack.config.js
└── yarn.lock
/.env.dist:
--------------------------------------------------------------------------------
1 | # This file is a "template" of which env vars need to be defined for your application
2 | # Copy this file to .env file for development, create environment variables when deploying to production
3 | # https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
4 |
5 | ###> symfony/framework-bundle ###
6 | APP_ENV=dev
7 | APP_SECRET=f74bb4c11edf0f83fb70918dd27ff8dd
8 | #TRUSTED_PROXIES=127.0.0.1,127.0.0.2
9 | #TRUSTED_HOSTS=localhost,example.com
10 | ###< symfony/framework-bundle ###
11 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ###> symfony/framework-bundle ###
2 | .env
3 | /public/bundles/
4 | /var/
5 | /vendor/
6 | ###< symfony/framework-bundle ###
7 |
8 | ###> symfony/webpack-encore-pack ###
9 | /node_modules/
10 | /public/build/
11 | ###< symfony/webpack-encore-pack ###
12 |
13 | ###> symfony/web-server-bundle ###
14 | .web-server-pid
15 | ###< symfony/web-server-bundle ###
16 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # React starter repo with Symfony 4 and Webpack Encore
2 |
3 | This is a Symfony 4 starter repo with React, developed for https://www.modernjsforphpdevs.com/react-symfony-4-starter-repo/
4 |
5 | Requirements
6 | ------------
7 |
8 | * PHP 7.1.3 or higher
9 | * [Node.js](https://nodejs.org/en/download/) 6.0.0 or higher
10 | * and the [usual Symfony application requirements][1].
11 |
12 | Installation
13 | ------------
14 |
15 | Install the composer dependencies:
16 |
17 | ```bash
18 | $ composer install
19 | ```
20 |
21 | Then install the node dependencies:
22 |
23 | ```bash
24 | $ yarn
25 |
26 | # OR
27 |
28 | $ npm install
29 | ```
30 |
31 | Usage
32 | -----
33 |
34 | Build the assets with Webpack Encore
35 |
36 | ```bash
37 | $ yarn run encore dev
38 | # yarn run encore dev --watch to automatically rebuild on every change
39 | ```
40 |
41 | And start the built-in webserver
42 |
43 | ```bash
44 | $ ./bin/console server:start
45 | # stop it again with ./bin/console server:stop
46 | ```
47 |
48 | Navigate to http://localhost:8000 to see the final result, which should look something like this:
49 |
50 | 
51 |
52 | [1]: https://symfony.com/doc/current/reference/requirements.html
--------------------------------------------------------------------------------
/assets/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zorfling/react-symfony-4-starter/e56c50709e8a12c0a7824c783de1f0ff8c98eb9a/assets/.gitignore
--------------------------------------------------------------------------------
/assets/css/app.css:
--------------------------------------------------------------------------------
1 | html {
2 | font-family: Arial, Helvetica, sans-serif;
3 | }
4 |
5 | .footer {
6 | display: flex;
7 | justify-content: center;
8 | }
9 |
--------------------------------------------------------------------------------
/assets/js/Components/ItemCard.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Card, CardHeader, CardTitle, CardText } from 'material-ui/Card';
3 |
4 | const ItemCard = ({ author, avatarUrl, title, subtitle, style, children }) => (
5 |
6 |
7 |
8 | {children}
9 |
10 | );
11 |
12 | export default ItemCard;
13 |
--------------------------------------------------------------------------------
/assets/js/app.js:
--------------------------------------------------------------------------------
1 | import '../css/app.css';
2 | import React from 'react';
3 | import ReactDOM from 'react-dom';
4 | import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
5 |
6 | import ItemCard from './Components/ItemCard';
7 |
8 | class App extends React.Component {
9 | constructor() {
10 | super();
11 |
12 | this.state = {
13 | entries: []
14 | };
15 | }
16 |
17 | componentDidMount() {
18 | fetch('/data')
19 | .then(response => response.json())
20 | .then(entries => {
21 | this.setState({
22 | entries
23 | });
24 | });
25 | }
26 |
27 | render() {
28 | return (
29 |
30 |
31 | {this.state.entries.map(
32 | ({ id, author, avatarUrl, title, description }) => (
33 |
40 | {description}
41 |
42 | )
43 | )}
44 |
45 |
46 | );
47 | }
48 | }
49 |
50 | ReactDOM.render(, document.getElementById('root'));
51 |
--------------------------------------------------------------------------------
/bin/console:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | load(__DIR__.'/../.env');
23 | }
24 |
25 | $input = new ArgvInput();
26 | $env = $input->getParameterOption(['--env', '-e'], $_SERVER['APP_ENV'] ?? 'dev');
27 | $debug = ($_SERVER['APP_DEBUG'] ?? ('prod' !== $env)) && !$input->hasParameterOption(['--no-debug', '']);
28 |
29 | if ($debug) {
30 | umask(0000);
31 |
32 | if (class_exists(Debug::class)) {
33 | Debug::enable();
34 | }
35 | }
36 |
37 | $kernel = new Kernel($env, $debug);
38 | $application = new Application($kernel);
39 | $application->run($input);
40 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "project",
3 | "license": "proprietary",
4 | "require": {
5 | "php": "^7.1.3",
6 | "ext-iconv": "*",
7 | "sensio/framework-extra-bundle": "^5.1",
8 | "symfony/asset": "^4.0",
9 | "symfony/console": "^4.0",
10 | "symfony/flex": "^1.0",
11 | "symfony/framework-bundle": "^4.0",
12 | "symfony/lts": "^4@dev",
13 | "symfony/twig-bundle": "^4.0",
14 | "symfony/webpack-encore-pack": "^1.0",
15 | "symfony/yaml": "^4.0"
16 | },
17 | "require-dev": {
18 | "symfony/dotenv": "^4.0",
19 | "symfony/web-server-bundle": "^4.0"
20 | },
21 | "config": {
22 | "preferred-install": {
23 | "*": "dist"
24 | },
25 | "sort-packages": true
26 | },
27 | "autoload": {
28 | "psr-4": {
29 | "App\\": "src/"
30 | }
31 | },
32 | "autoload-dev": {
33 | "psr-4": {
34 | "App\\Tests\\": "tests/"
35 | }
36 | },
37 | "replace": {
38 | "symfony/polyfill-iconv": "*",
39 | "symfony/polyfill-php71": "*",
40 | "symfony/polyfill-php70": "*",
41 | "symfony/polyfill-php56": "*"
42 | },
43 | "scripts": {
44 | "auto-scripts": {
45 | "cache:clear": "symfony-cmd",
46 | "assets:install --symlink --relative %PUBLIC_DIR%": "symfony-cmd"
47 | },
48 | "post-install-cmd": [
49 | "@auto-scripts"
50 | ],
51 | "post-update-cmd": [
52 | "@auto-scripts"
53 | ]
54 | },
55 | "conflict": {
56 | "symfony/symfony": "*"
57 | },
58 | "extra": {
59 | "symfony": {
60 | "id": "01C1SRVACKRCQK55Z6B5EEQ1VV",
61 | "allow-contrib": false
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 | "This file is @generated automatically"
6 | ],
7 | "content-hash": "b0a77f67dbc831014b79dc5a3f0bca0f",
8 | "packages": [
9 | {
10 | "name": "doctrine/annotations",
11 | "version": "v1.6.0",
12 | "source": {
13 | "type": "git",
14 | "url": "https://github.com/doctrine/annotations.git",
15 | "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5"
16 | },
17 | "dist": {
18 | "type": "zip",
19 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5",
20 | "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5",
21 | "shasum": ""
22 | },
23 | "require": {
24 | "doctrine/lexer": "1.*",
25 | "php": "^7.1"
26 | },
27 | "require-dev": {
28 | "doctrine/cache": "1.*",
29 | "phpunit/phpunit": "^6.4"
30 | },
31 | "type": "library",
32 | "extra": {
33 | "branch-alias": {
34 | "dev-master": "1.6.x-dev"
35 | }
36 | },
37 | "autoload": {
38 | "psr-4": {
39 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
40 | }
41 | },
42 | "notification-url": "https://packagist.org/downloads/",
43 | "license": [
44 | "MIT"
45 | ],
46 | "authors": [
47 | {
48 | "name": "Roman Borschel",
49 | "email": "roman@code-factory.org"
50 | },
51 | {
52 | "name": "Benjamin Eberlei",
53 | "email": "kontakt@beberlei.de"
54 | },
55 | {
56 | "name": "Guilherme Blanco",
57 | "email": "guilhermeblanco@gmail.com"
58 | },
59 | {
60 | "name": "Jonathan Wage",
61 | "email": "jonwage@gmail.com"
62 | },
63 | {
64 | "name": "Johannes Schmitt",
65 | "email": "schmittjoh@gmail.com"
66 | }
67 | ],
68 | "description": "Docblock Annotations Parser",
69 | "homepage": "http://www.doctrine-project.org",
70 | "keywords": [
71 | "annotations",
72 | "docblock",
73 | "parser"
74 | ],
75 | "time": "2017-12-06T07:11:42+00:00"
76 | },
77 | {
78 | "name": "doctrine/cache",
79 | "version": "v1.7.1",
80 | "source": {
81 | "type": "git",
82 | "url": "https://github.com/doctrine/cache.git",
83 | "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a"
84 | },
85 | "dist": {
86 | "type": "zip",
87 | "url": "https://api.github.com/repos/doctrine/cache/zipball/b3217d58609e9c8e661cd41357a54d926c4a2a1a",
88 | "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a",
89 | "shasum": ""
90 | },
91 | "require": {
92 | "php": "~7.1"
93 | },
94 | "conflict": {
95 | "doctrine/common": ">2.2,<2.4"
96 | },
97 | "require-dev": {
98 | "alcaeus/mongo-php-adapter": "^1.1",
99 | "mongodb/mongodb": "^1.1",
100 | "phpunit/phpunit": "^5.7",
101 | "predis/predis": "~1.0"
102 | },
103 | "suggest": {
104 | "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
105 | },
106 | "type": "library",
107 | "extra": {
108 | "branch-alias": {
109 | "dev-master": "1.7.x-dev"
110 | }
111 | },
112 | "autoload": {
113 | "psr-4": {
114 | "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
115 | }
116 | },
117 | "notification-url": "https://packagist.org/downloads/",
118 | "license": [
119 | "MIT"
120 | ],
121 | "authors": [
122 | {
123 | "name": "Roman Borschel",
124 | "email": "roman@code-factory.org"
125 | },
126 | {
127 | "name": "Benjamin Eberlei",
128 | "email": "kontakt@beberlei.de"
129 | },
130 | {
131 | "name": "Guilherme Blanco",
132 | "email": "guilhermeblanco@gmail.com"
133 | },
134 | {
135 | "name": "Jonathan Wage",
136 | "email": "jonwage@gmail.com"
137 | },
138 | {
139 | "name": "Johannes Schmitt",
140 | "email": "schmittjoh@gmail.com"
141 | }
142 | ],
143 | "description": "Caching library offering an object-oriented API for many cache backends",
144 | "homepage": "http://www.doctrine-project.org",
145 | "keywords": [
146 | "cache",
147 | "caching"
148 | ],
149 | "time": "2017-08-25T07:02:50+00:00"
150 | },
151 | {
152 | "name": "doctrine/collections",
153 | "version": "v1.5.0",
154 | "source": {
155 | "type": "git",
156 | "url": "https://github.com/doctrine/collections.git",
157 | "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf"
158 | },
159 | "dist": {
160 | "type": "zip",
161 | "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf",
162 | "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf",
163 | "shasum": ""
164 | },
165 | "require": {
166 | "php": "^7.1"
167 | },
168 | "require-dev": {
169 | "doctrine/coding-standard": "~0.1@dev",
170 | "phpunit/phpunit": "^5.7"
171 | },
172 | "type": "library",
173 | "extra": {
174 | "branch-alias": {
175 | "dev-master": "1.3.x-dev"
176 | }
177 | },
178 | "autoload": {
179 | "psr-0": {
180 | "Doctrine\\Common\\Collections\\": "lib/"
181 | }
182 | },
183 | "notification-url": "https://packagist.org/downloads/",
184 | "license": [
185 | "MIT"
186 | ],
187 | "authors": [
188 | {
189 | "name": "Roman Borschel",
190 | "email": "roman@code-factory.org"
191 | },
192 | {
193 | "name": "Benjamin Eberlei",
194 | "email": "kontakt@beberlei.de"
195 | },
196 | {
197 | "name": "Guilherme Blanco",
198 | "email": "guilhermeblanco@gmail.com"
199 | },
200 | {
201 | "name": "Jonathan Wage",
202 | "email": "jonwage@gmail.com"
203 | },
204 | {
205 | "name": "Johannes Schmitt",
206 | "email": "schmittjoh@gmail.com"
207 | }
208 | ],
209 | "description": "Collections Abstraction library",
210 | "homepage": "http://www.doctrine-project.org",
211 | "keywords": [
212 | "array",
213 | "collections",
214 | "iterator"
215 | ],
216 | "time": "2017-07-22T10:37:32+00:00"
217 | },
218 | {
219 | "name": "doctrine/common",
220 | "version": "v2.8.1",
221 | "source": {
222 | "type": "git",
223 | "url": "https://github.com/doctrine/common.git",
224 | "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66"
225 | },
226 | "dist": {
227 | "type": "zip",
228 | "url": "https://api.github.com/repos/doctrine/common/zipball/f68c297ce6455e8fd794aa8ffaf9fa458f6ade66",
229 | "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66",
230 | "shasum": ""
231 | },
232 | "require": {
233 | "doctrine/annotations": "1.*",
234 | "doctrine/cache": "1.*",
235 | "doctrine/collections": "1.*",
236 | "doctrine/inflector": "1.*",
237 | "doctrine/lexer": "1.*",
238 | "php": "~7.1"
239 | },
240 | "require-dev": {
241 | "phpunit/phpunit": "^5.7"
242 | },
243 | "type": "library",
244 | "extra": {
245 | "branch-alias": {
246 | "dev-master": "2.8.x-dev"
247 | }
248 | },
249 | "autoload": {
250 | "psr-4": {
251 | "Doctrine\\Common\\": "lib/Doctrine/Common"
252 | }
253 | },
254 | "notification-url": "https://packagist.org/downloads/",
255 | "license": [
256 | "MIT"
257 | ],
258 | "authors": [
259 | {
260 | "name": "Roman Borschel",
261 | "email": "roman@code-factory.org"
262 | },
263 | {
264 | "name": "Benjamin Eberlei",
265 | "email": "kontakt@beberlei.de"
266 | },
267 | {
268 | "name": "Guilherme Blanco",
269 | "email": "guilhermeblanco@gmail.com"
270 | },
271 | {
272 | "name": "Jonathan Wage",
273 | "email": "jonwage@gmail.com"
274 | },
275 | {
276 | "name": "Johannes Schmitt",
277 | "email": "schmittjoh@gmail.com"
278 | }
279 | ],
280 | "description": "Common Library for Doctrine projects",
281 | "homepage": "http://www.doctrine-project.org",
282 | "keywords": [
283 | "annotations",
284 | "collections",
285 | "eventmanager",
286 | "persistence",
287 | "spl"
288 | ],
289 | "time": "2017-08-31T08:43:38+00:00"
290 | },
291 | {
292 | "name": "doctrine/inflector",
293 | "version": "v1.2.0",
294 | "source": {
295 | "type": "git",
296 | "url": "https://github.com/doctrine/inflector.git",
297 | "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462"
298 | },
299 | "dist": {
300 | "type": "zip",
301 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/e11d84c6e018beedd929cff5220969a3c6d1d462",
302 | "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462",
303 | "shasum": ""
304 | },
305 | "require": {
306 | "php": "^7.0"
307 | },
308 | "require-dev": {
309 | "phpunit/phpunit": "^6.2"
310 | },
311 | "type": "library",
312 | "extra": {
313 | "branch-alias": {
314 | "dev-master": "1.2.x-dev"
315 | }
316 | },
317 | "autoload": {
318 | "psr-4": {
319 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
320 | }
321 | },
322 | "notification-url": "https://packagist.org/downloads/",
323 | "license": [
324 | "MIT"
325 | ],
326 | "authors": [
327 | {
328 | "name": "Roman Borschel",
329 | "email": "roman@code-factory.org"
330 | },
331 | {
332 | "name": "Benjamin Eberlei",
333 | "email": "kontakt@beberlei.de"
334 | },
335 | {
336 | "name": "Guilherme Blanco",
337 | "email": "guilhermeblanco@gmail.com"
338 | },
339 | {
340 | "name": "Jonathan Wage",
341 | "email": "jonwage@gmail.com"
342 | },
343 | {
344 | "name": "Johannes Schmitt",
345 | "email": "schmittjoh@gmail.com"
346 | }
347 | ],
348 | "description": "Common String Manipulations with regard to casing and singular/plural rules.",
349 | "homepage": "http://www.doctrine-project.org",
350 | "keywords": [
351 | "inflection",
352 | "pluralize",
353 | "singularize",
354 | "string"
355 | ],
356 | "time": "2017-07-22T12:18:28+00:00"
357 | },
358 | {
359 | "name": "doctrine/lexer",
360 | "version": "v1.0.1",
361 | "source": {
362 | "type": "git",
363 | "url": "https://github.com/doctrine/lexer.git",
364 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
365 | },
366 | "dist": {
367 | "type": "zip",
368 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
369 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
370 | "shasum": ""
371 | },
372 | "require": {
373 | "php": ">=5.3.2"
374 | },
375 | "type": "library",
376 | "extra": {
377 | "branch-alias": {
378 | "dev-master": "1.0.x-dev"
379 | }
380 | },
381 | "autoload": {
382 | "psr-0": {
383 | "Doctrine\\Common\\Lexer\\": "lib/"
384 | }
385 | },
386 | "notification-url": "https://packagist.org/downloads/",
387 | "license": [
388 | "MIT"
389 | ],
390 | "authors": [
391 | {
392 | "name": "Roman Borschel",
393 | "email": "roman@code-factory.org"
394 | },
395 | {
396 | "name": "Guilherme Blanco",
397 | "email": "guilhermeblanco@gmail.com"
398 | },
399 | {
400 | "name": "Johannes Schmitt",
401 | "email": "schmittjoh@gmail.com"
402 | }
403 | ],
404 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
405 | "homepage": "http://www.doctrine-project.org",
406 | "keywords": [
407 | "lexer",
408 | "parser"
409 | ],
410 | "time": "2014-09-09T13:34:57+00:00"
411 | },
412 | {
413 | "name": "psr/cache",
414 | "version": "1.0.1",
415 | "source": {
416 | "type": "git",
417 | "url": "https://github.com/php-fig/cache.git",
418 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
419 | },
420 | "dist": {
421 | "type": "zip",
422 | "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
423 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
424 | "shasum": ""
425 | },
426 | "require": {
427 | "php": ">=5.3.0"
428 | },
429 | "type": "library",
430 | "extra": {
431 | "branch-alias": {
432 | "dev-master": "1.0.x-dev"
433 | }
434 | },
435 | "autoload": {
436 | "psr-4": {
437 | "Psr\\Cache\\": "src/"
438 | }
439 | },
440 | "notification-url": "https://packagist.org/downloads/",
441 | "license": [
442 | "MIT"
443 | ],
444 | "authors": [
445 | {
446 | "name": "PHP-FIG",
447 | "homepage": "http://www.php-fig.org/"
448 | }
449 | ],
450 | "description": "Common interface for caching libraries",
451 | "keywords": [
452 | "cache",
453 | "psr",
454 | "psr-6"
455 | ],
456 | "time": "2016-08-06T20:24:11+00:00"
457 | },
458 | {
459 | "name": "psr/container",
460 | "version": "1.0.0",
461 | "source": {
462 | "type": "git",
463 | "url": "https://github.com/php-fig/container.git",
464 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
465 | },
466 | "dist": {
467 | "type": "zip",
468 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
469 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
470 | "shasum": ""
471 | },
472 | "require": {
473 | "php": ">=5.3.0"
474 | },
475 | "type": "library",
476 | "extra": {
477 | "branch-alias": {
478 | "dev-master": "1.0.x-dev"
479 | }
480 | },
481 | "autoload": {
482 | "psr-4": {
483 | "Psr\\Container\\": "src/"
484 | }
485 | },
486 | "notification-url": "https://packagist.org/downloads/",
487 | "license": [
488 | "MIT"
489 | ],
490 | "authors": [
491 | {
492 | "name": "PHP-FIG",
493 | "homepage": "http://www.php-fig.org/"
494 | }
495 | ],
496 | "description": "Common Container Interface (PHP FIG PSR-11)",
497 | "homepage": "https://github.com/php-fig/container",
498 | "keywords": [
499 | "PSR-11",
500 | "container",
501 | "container-interface",
502 | "container-interop",
503 | "psr"
504 | ],
505 | "time": "2017-02-14T16:28:37+00:00"
506 | },
507 | {
508 | "name": "psr/log",
509 | "version": "1.0.2",
510 | "source": {
511 | "type": "git",
512 | "url": "https://github.com/php-fig/log.git",
513 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
514 | },
515 | "dist": {
516 | "type": "zip",
517 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
518 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
519 | "shasum": ""
520 | },
521 | "require": {
522 | "php": ">=5.3.0"
523 | },
524 | "type": "library",
525 | "extra": {
526 | "branch-alias": {
527 | "dev-master": "1.0.x-dev"
528 | }
529 | },
530 | "autoload": {
531 | "psr-4": {
532 | "Psr\\Log\\": "Psr/Log/"
533 | }
534 | },
535 | "notification-url": "https://packagist.org/downloads/",
536 | "license": [
537 | "MIT"
538 | ],
539 | "authors": [
540 | {
541 | "name": "PHP-FIG",
542 | "homepage": "http://www.php-fig.org/"
543 | }
544 | ],
545 | "description": "Common interface for logging libraries",
546 | "homepage": "https://github.com/php-fig/log",
547 | "keywords": [
548 | "log",
549 | "psr",
550 | "psr-3"
551 | ],
552 | "time": "2016-10-10T12:19:37+00:00"
553 | },
554 | {
555 | "name": "psr/simple-cache",
556 | "version": "1.0.0",
557 | "source": {
558 | "type": "git",
559 | "url": "https://github.com/php-fig/simple-cache.git",
560 | "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24"
561 | },
562 | "dist": {
563 | "type": "zip",
564 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/753fa598e8f3b9966c886fe13f370baa45ef0e24",
565 | "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24",
566 | "shasum": ""
567 | },
568 | "require": {
569 | "php": ">=5.3.0"
570 | },
571 | "type": "library",
572 | "extra": {
573 | "branch-alias": {
574 | "dev-master": "1.0.x-dev"
575 | }
576 | },
577 | "autoload": {
578 | "psr-4": {
579 | "Psr\\SimpleCache\\": "src/"
580 | }
581 | },
582 | "notification-url": "https://packagist.org/downloads/",
583 | "license": [
584 | "MIT"
585 | ],
586 | "authors": [
587 | {
588 | "name": "PHP-FIG",
589 | "homepage": "http://www.php-fig.org/"
590 | }
591 | ],
592 | "description": "Common interfaces for simple caching",
593 | "keywords": [
594 | "cache",
595 | "caching",
596 | "psr",
597 | "psr-16",
598 | "simple-cache"
599 | ],
600 | "time": "2017-01-02T13:31:39+00:00"
601 | },
602 | {
603 | "name": "sensio/framework-extra-bundle",
604 | "version": "v5.1.3",
605 | "source": {
606 | "type": "git",
607 | "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
608 | "reference": "0696496cb3e2d23add645d424699e5c723238aad"
609 | },
610 | "dist": {
611 | "type": "zip",
612 | "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/0696496cb3e2d23add645d424699e5c723238aad",
613 | "reference": "0696496cb3e2d23add645d424699e5c723238aad",
614 | "shasum": ""
615 | },
616 | "require": {
617 | "doctrine/common": "^2.2",
618 | "symfony/config": "^3.3|^4.0",
619 | "symfony/dependency-injection": "^3.3|^4.0",
620 | "symfony/framework-bundle": "^3.3|^4.0",
621 | "symfony/http-kernel": "^3.3|^4.0"
622 | },
623 | "require-dev": {
624 | "doctrine/doctrine-bundle": "^1.6",
625 | "doctrine/orm": "^2.5",
626 | "symfony/browser-kit": "^3.3|^4.0",
627 | "symfony/dom-crawler": "^3.3|^4.0",
628 | "symfony/expression-language": "^3.3|^4.0",
629 | "symfony/finder": "^3.3|^4.0",
630 | "symfony/phpunit-bridge": "^3.3|^4.0",
631 | "symfony/psr-http-message-bridge": "^0.3",
632 | "symfony/security-bundle": "^3.3|^4.0",
633 | "symfony/twig-bundle": "^3.3|^4.0",
634 | "symfony/yaml": "^3.3|^4.0",
635 | "twig/twig": "~1.12|~2.0",
636 | "zendframework/zend-diactoros": "^1.3"
637 | },
638 | "suggest": {
639 | "symfony/expression-language": "",
640 | "symfony/psr-http-message-bridge": "To use the PSR-7 converters",
641 | "symfony/security-bundle": ""
642 | },
643 | "type": "symfony-bundle",
644 | "extra": {
645 | "branch-alias": {
646 | "dev-master": "5.1.x-dev"
647 | }
648 | },
649 | "autoload": {
650 | "psr-4": {
651 | "Sensio\\Bundle\\FrameworkExtraBundle\\": ""
652 | }
653 | },
654 | "notification-url": "https://packagist.org/downloads/",
655 | "license": [
656 | "MIT"
657 | ],
658 | "authors": [
659 | {
660 | "name": "Fabien Potencier",
661 | "email": "fabien@symfony.com"
662 | }
663 | ],
664 | "description": "This bundle provides a way to configure your controllers with annotations",
665 | "keywords": [
666 | "annotations",
667 | "controllers"
668 | ],
669 | "time": "2017-12-04T18:33:55+00:00"
670 | },
671 | {
672 | "name": "symfony/asset",
673 | "version": "v4.0.3",
674 | "source": {
675 | "type": "git",
676 | "url": "https://github.com/symfony/asset.git",
677 | "reference": "db6063ab6e71c0d4910328a4d10eba197e1d6b40"
678 | },
679 | "dist": {
680 | "type": "zip",
681 | "url": "https://api.github.com/repos/symfony/asset/zipball/db6063ab6e71c0d4910328a4d10eba197e1d6b40",
682 | "reference": "db6063ab6e71c0d4910328a4d10eba197e1d6b40",
683 | "shasum": ""
684 | },
685 | "require": {
686 | "php": "^7.1.3"
687 | },
688 | "require-dev": {
689 | "symfony/http-foundation": "~3.4|~4.0",
690 | "symfony/http-kernel": "~3.4|~4.0"
691 | },
692 | "suggest": {
693 | "symfony/http-foundation": ""
694 | },
695 | "type": "library",
696 | "extra": {
697 | "branch-alias": {
698 | "dev-master": "4.0-dev"
699 | }
700 | },
701 | "autoload": {
702 | "psr-4": {
703 | "Symfony\\Component\\Asset\\": ""
704 | },
705 | "exclude-from-classmap": [
706 | "/Tests/"
707 | ]
708 | },
709 | "notification-url": "https://packagist.org/downloads/",
710 | "license": [
711 | "MIT"
712 | ],
713 | "authors": [
714 | {
715 | "name": "Fabien Potencier",
716 | "email": "fabien@symfony.com"
717 | },
718 | {
719 | "name": "Symfony Community",
720 | "homepage": "https://symfony.com/contributors"
721 | }
722 | ],
723 | "description": "Symfony Asset Component",
724 | "homepage": "https://symfony.com",
725 | "time": "2018-01-03T07:38:00+00:00"
726 | },
727 | {
728 | "name": "symfony/cache",
729 | "version": "v4.0.2",
730 | "source": {
731 | "type": "git",
732 | "url": "https://github.com/symfony/cache.git",
733 | "reference": "d00351f230ca037ca13f6fec3411e002043f7421"
734 | },
735 | "dist": {
736 | "type": "zip",
737 | "url": "https://api.github.com/repos/symfony/cache/zipball/d00351f230ca037ca13f6fec3411e002043f7421",
738 | "reference": "d00351f230ca037ca13f6fec3411e002043f7421",
739 | "shasum": ""
740 | },
741 | "require": {
742 | "php": "^7.1.3",
743 | "psr/cache": "~1.0",
744 | "psr/log": "~1.0",
745 | "psr/simple-cache": "^1.0"
746 | },
747 | "conflict": {
748 | "symfony/var-dumper": "<3.4"
749 | },
750 | "provide": {
751 | "psr/cache-implementation": "1.0",
752 | "psr/simple-cache-implementation": "1.0"
753 | },
754 | "require-dev": {
755 | "cache/integration-tests": "dev-master",
756 | "doctrine/cache": "~1.6",
757 | "doctrine/dbal": "~2.4",
758 | "predis/predis": "~1.0"
759 | },
760 | "type": "library",
761 | "extra": {
762 | "branch-alias": {
763 | "dev-master": "4.0-dev"
764 | }
765 | },
766 | "autoload": {
767 | "psr-4": {
768 | "Symfony\\Component\\Cache\\": ""
769 | },
770 | "exclude-from-classmap": [
771 | "/Tests/"
772 | ]
773 | },
774 | "notification-url": "https://packagist.org/downloads/",
775 | "license": [
776 | "MIT"
777 | ],
778 | "authors": [
779 | {
780 | "name": "Nicolas Grekas",
781 | "email": "p@tchwork.com"
782 | },
783 | {
784 | "name": "Symfony Community",
785 | "homepage": "https://symfony.com/contributors"
786 | }
787 | ],
788 | "description": "Symfony Cache component with PSR-6, PSR-16, and tags",
789 | "homepage": "https://symfony.com",
790 | "keywords": [
791 | "caching",
792 | "psr6"
793 | ],
794 | "time": "2017-12-08T16:11:45+00:00"
795 | },
796 | {
797 | "name": "symfony/config",
798 | "version": "v4.0.3",
799 | "source": {
800 | "type": "git",
801 | "url": "https://github.com/symfony/config.git",
802 | "reference": "0e86d267db0851cf55f339c97df00d693fe8592f"
803 | },
804 | "dist": {
805 | "type": "zip",
806 | "url": "https://api.github.com/repos/symfony/config/zipball/0e86d267db0851cf55f339c97df00d693fe8592f",
807 | "reference": "0e86d267db0851cf55f339c97df00d693fe8592f",
808 | "shasum": ""
809 | },
810 | "require": {
811 | "php": "^7.1.3",
812 | "symfony/filesystem": "~3.4|~4.0"
813 | },
814 | "conflict": {
815 | "symfony/finder": "<3.4"
816 | },
817 | "require-dev": {
818 | "symfony/finder": "~3.4|~4.0",
819 | "symfony/yaml": "~3.4|~4.0"
820 | },
821 | "suggest": {
822 | "symfony/yaml": "To use the yaml reference dumper"
823 | },
824 | "type": "library",
825 | "extra": {
826 | "branch-alias": {
827 | "dev-master": "4.0-dev"
828 | }
829 | },
830 | "autoload": {
831 | "psr-4": {
832 | "Symfony\\Component\\Config\\": ""
833 | },
834 | "exclude-from-classmap": [
835 | "/Tests/"
836 | ]
837 | },
838 | "notification-url": "https://packagist.org/downloads/",
839 | "license": [
840 | "MIT"
841 | ],
842 | "authors": [
843 | {
844 | "name": "Fabien Potencier",
845 | "email": "fabien@symfony.com"
846 | },
847 | {
848 | "name": "Symfony Community",
849 | "homepage": "https://symfony.com/contributors"
850 | }
851 | ],
852 | "description": "Symfony Config Component",
853 | "homepage": "https://symfony.com",
854 | "time": "2018-01-03T07:38:00+00:00"
855 | },
856 | {
857 | "name": "symfony/console",
858 | "version": "v4.0.2",
859 | "source": {
860 | "type": "git",
861 | "url": "https://github.com/symfony/console.git",
862 | "reference": "de8cf039eacdec59d83f7def67e3b8ff5ed46714"
863 | },
864 | "dist": {
865 | "type": "zip",
866 | "url": "https://api.github.com/repos/symfony/console/zipball/de8cf039eacdec59d83f7def67e3b8ff5ed46714",
867 | "reference": "de8cf039eacdec59d83f7def67e3b8ff5ed46714",
868 | "shasum": ""
869 | },
870 | "require": {
871 | "php": "^7.1.3",
872 | "symfony/polyfill-mbstring": "~1.0"
873 | },
874 | "conflict": {
875 | "symfony/dependency-injection": "<3.4",
876 | "symfony/process": "<3.3"
877 | },
878 | "require-dev": {
879 | "psr/log": "~1.0",
880 | "symfony/config": "~3.4|~4.0",
881 | "symfony/dependency-injection": "~3.4|~4.0",
882 | "symfony/event-dispatcher": "~3.4|~4.0",
883 | "symfony/lock": "~3.4|~4.0",
884 | "symfony/process": "~3.4|~4.0"
885 | },
886 | "suggest": {
887 | "psr/log": "For using the console logger",
888 | "symfony/event-dispatcher": "",
889 | "symfony/lock": "",
890 | "symfony/process": ""
891 | },
892 | "type": "library",
893 | "extra": {
894 | "branch-alias": {
895 | "dev-master": "4.0-dev"
896 | }
897 | },
898 | "autoload": {
899 | "psr-4": {
900 | "Symfony\\Component\\Console\\": ""
901 | },
902 | "exclude-from-classmap": [
903 | "/Tests/"
904 | ]
905 | },
906 | "notification-url": "https://packagist.org/downloads/",
907 | "license": [
908 | "MIT"
909 | ],
910 | "authors": [
911 | {
912 | "name": "Fabien Potencier",
913 | "email": "fabien@symfony.com"
914 | },
915 | {
916 | "name": "Symfony Community",
917 | "homepage": "https://symfony.com/contributors"
918 | }
919 | ],
920 | "description": "Symfony Console Component",
921 | "homepage": "https://symfony.com",
922 | "time": "2017-12-14T19:48:22+00:00"
923 | },
924 | {
925 | "name": "symfony/debug",
926 | "version": "v4.0.3",
927 | "source": {
928 | "type": "git",
929 | "url": "https://github.com/symfony/debug.git",
930 | "reference": "9ae4223a661b56a9abdce144de4886cca37f198f"
931 | },
932 | "dist": {
933 | "type": "zip",
934 | "url": "https://api.github.com/repos/symfony/debug/zipball/9ae4223a661b56a9abdce144de4886cca37f198f",
935 | "reference": "9ae4223a661b56a9abdce144de4886cca37f198f",
936 | "shasum": ""
937 | },
938 | "require": {
939 | "php": "^7.1.3",
940 | "psr/log": "~1.0"
941 | },
942 | "conflict": {
943 | "symfony/http-kernel": "<3.4"
944 | },
945 | "require-dev": {
946 | "symfony/http-kernel": "~3.4|~4.0"
947 | },
948 | "type": "library",
949 | "extra": {
950 | "branch-alias": {
951 | "dev-master": "4.0-dev"
952 | }
953 | },
954 | "autoload": {
955 | "psr-4": {
956 | "Symfony\\Component\\Debug\\": ""
957 | },
958 | "exclude-from-classmap": [
959 | "/Tests/"
960 | ]
961 | },
962 | "notification-url": "https://packagist.org/downloads/",
963 | "license": [
964 | "MIT"
965 | ],
966 | "authors": [
967 | {
968 | "name": "Fabien Potencier",
969 | "email": "fabien@symfony.com"
970 | },
971 | {
972 | "name": "Symfony Community",
973 | "homepage": "https://symfony.com/contributors"
974 | }
975 | ],
976 | "description": "Symfony Debug Component",
977 | "homepage": "https://symfony.com",
978 | "time": "2018-01-03T17:15:19+00:00"
979 | },
980 | {
981 | "name": "symfony/dependency-injection",
982 | "version": "v4.0.3",
983 | "source": {
984 | "type": "git",
985 | "url": "https://github.com/symfony/dependency-injection.git",
986 | "reference": "67bf5e4f4da85624f30a5e43b7f43225c8b71959"
987 | },
988 | "dist": {
989 | "type": "zip",
990 | "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/67bf5e4f4da85624f30a5e43b7f43225c8b71959",
991 | "reference": "67bf5e4f4da85624f30a5e43b7f43225c8b71959",
992 | "shasum": ""
993 | },
994 | "require": {
995 | "php": "^7.1.3",
996 | "psr/container": "^1.0"
997 | },
998 | "conflict": {
999 | "symfony/config": "<3.4",
1000 | "symfony/finder": "<3.4",
1001 | "symfony/proxy-manager-bridge": "<3.4",
1002 | "symfony/yaml": "<3.4"
1003 | },
1004 | "provide": {
1005 | "psr/container-implementation": "1.0"
1006 | },
1007 | "require-dev": {
1008 | "symfony/config": "~3.4|~4.0",
1009 | "symfony/expression-language": "~3.4|~4.0",
1010 | "symfony/yaml": "~3.4|~4.0"
1011 | },
1012 | "suggest": {
1013 | "symfony/config": "",
1014 | "symfony/expression-language": "For using expressions in service container configuration",
1015 | "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
1016 | "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
1017 | "symfony/yaml": ""
1018 | },
1019 | "type": "library",
1020 | "extra": {
1021 | "branch-alias": {
1022 | "dev-master": "4.0-dev"
1023 | }
1024 | },
1025 | "autoload": {
1026 | "psr-4": {
1027 | "Symfony\\Component\\DependencyInjection\\": ""
1028 | },
1029 | "exclude-from-classmap": [
1030 | "/Tests/"
1031 | ]
1032 | },
1033 | "notification-url": "https://packagist.org/downloads/",
1034 | "license": [
1035 | "MIT"
1036 | ],
1037 | "authors": [
1038 | {
1039 | "name": "Fabien Potencier",
1040 | "email": "fabien@symfony.com"
1041 | },
1042 | {
1043 | "name": "Symfony Community",
1044 | "homepage": "https://symfony.com/contributors"
1045 | }
1046 | ],
1047 | "description": "Symfony DependencyInjection Component",
1048 | "homepage": "https://symfony.com",
1049 | "time": "2018-01-04T15:52:56+00:00"
1050 | },
1051 | {
1052 | "name": "symfony/event-dispatcher",
1053 | "version": "v4.0.3",
1054 | "source": {
1055 | "type": "git",
1056 | "url": "https://github.com/symfony/event-dispatcher.git",
1057 | "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb"
1058 | },
1059 | "dist": {
1060 | "type": "zip",
1061 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74d33aac36208c4d6757807d9f598f0133a3a4eb",
1062 | "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb",
1063 | "shasum": ""
1064 | },
1065 | "require": {
1066 | "php": "^7.1.3"
1067 | },
1068 | "conflict": {
1069 | "symfony/dependency-injection": "<3.4"
1070 | },
1071 | "require-dev": {
1072 | "psr/log": "~1.0",
1073 | "symfony/config": "~3.4|~4.0",
1074 | "symfony/dependency-injection": "~3.4|~4.0",
1075 | "symfony/expression-language": "~3.4|~4.0",
1076 | "symfony/stopwatch": "~3.4|~4.0"
1077 | },
1078 | "suggest": {
1079 | "symfony/dependency-injection": "",
1080 | "symfony/http-kernel": ""
1081 | },
1082 | "type": "library",
1083 | "extra": {
1084 | "branch-alias": {
1085 | "dev-master": "4.0-dev"
1086 | }
1087 | },
1088 | "autoload": {
1089 | "psr-4": {
1090 | "Symfony\\Component\\EventDispatcher\\": ""
1091 | },
1092 | "exclude-from-classmap": [
1093 | "/Tests/"
1094 | ]
1095 | },
1096 | "notification-url": "https://packagist.org/downloads/",
1097 | "license": [
1098 | "MIT"
1099 | ],
1100 | "authors": [
1101 | {
1102 | "name": "Fabien Potencier",
1103 | "email": "fabien@symfony.com"
1104 | },
1105 | {
1106 | "name": "Symfony Community",
1107 | "homepage": "https://symfony.com/contributors"
1108 | }
1109 | ],
1110 | "description": "Symfony EventDispatcher Component",
1111 | "homepage": "https://symfony.com",
1112 | "time": "2018-01-03T07:38:00+00:00"
1113 | },
1114 | {
1115 | "name": "symfony/filesystem",
1116 | "version": "v4.0.3",
1117 | "source": {
1118 | "type": "git",
1119 | "url": "https://github.com/symfony/filesystem.git",
1120 | "reference": "760e47a4ee64b4c48f4b30017011e09d4c0f05ed"
1121 | },
1122 | "dist": {
1123 | "type": "zip",
1124 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/760e47a4ee64b4c48f4b30017011e09d4c0f05ed",
1125 | "reference": "760e47a4ee64b4c48f4b30017011e09d4c0f05ed",
1126 | "shasum": ""
1127 | },
1128 | "require": {
1129 | "php": "^7.1.3"
1130 | },
1131 | "type": "library",
1132 | "extra": {
1133 | "branch-alias": {
1134 | "dev-master": "4.0-dev"
1135 | }
1136 | },
1137 | "autoload": {
1138 | "psr-4": {
1139 | "Symfony\\Component\\Filesystem\\": ""
1140 | },
1141 | "exclude-from-classmap": [
1142 | "/Tests/"
1143 | ]
1144 | },
1145 | "notification-url": "https://packagist.org/downloads/",
1146 | "license": [
1147 | "MIT"
1148 | ],
1149 | "authors": [
1150 | {
1151 | "name": "Fabien Potencier",
1152 | "email": "fabien@symfony.com"
1153 | },
1154 | {
1155 | "name": "Symfony Community",
1156 | "homepage": "https://symfony.com/contributors"
1157 | }
1158 | ],
1159 | "description": "Symfony Filesystem Component",
1160 | "homepage": "https://symfony.com",
1161 | "time": "2018-01-03T07:38:00+00:00"
1162 | },
1163 | {
1164 | "name": "symfony/finder",
1165 | "version": "v4.0.2",
1166 | "source": {
1167 | "type": "git",
1168 | "url": "https://github.com/symfony/finder.git",
1169 | "reference": "c9cdda4dc4a3182d8d6daeebce4a25fef078ea4c"
1170 | },
1171 | "dist": {
1172 | "type": "zip",
1173 | "url": "https://api.github.com/repos/symfony/finder/zipball/c9cdda4dc4a3182d8d6daeebce4a25fef078ea4c",
1174 | "reference": "c9cdda4dc4a3182d8d6daeebce4a25fef078ea4c",
1175 | "shasum": ""
1176 | },
1177 | "require": {
1178 | "php": "^7.1.3"
1179 | },
1180 | "type": "library",
1181 | "extra": {
1182 | "branch-alias": {
1183 | "dev-master": "4.0-dev"
1184 | }
1185 | },
1186 | "autoload": {
1187 | "psr-4": {
1188 | "Symfony\\Component\\Finder\\": ""
1189 | },
1190 | "exclude-from-classmap": [
1191 | "/Tests/"
1192 | ]
1193 | },
1194 | "notification-url": "https://packagist.org/downloads/",
1195 | "license": [
1196 | "MIT"
1197 | ],
1198 | "authors": [
1199 | {
1200 | "name": "Fabien Potencier",
1201 | "email": "fabien@symfony.com"
1202 | },
1203 | {
1204 | "name": "Symfony Community",
1205 | "homepage": "https://symfony.com/contributors"
1206 | }
1207 | ],
1208 | "description": "Symfony Finder Component",
1209 | "homepage": "https://symfony.com",
1210 | "time": "2017-11-07T14:45:01+00:00"
1211 | },
1212 | {
1213 | "name": "symfony/flex",
1214 | "version": "v1.0.51",
1215 | "source": {
1216 | "type": "git",
1217 | "url": "https://github.com/symfony/flex.git",
1218 | "reference": "adb823e2d21c88174a03f16a7b7eb9879b83107f"
1219 | },
1220 | "dist": {
1221 | "type": "zip",
1222 | "url": "https://api.github.com/repos/symfony/flex/zipball/adb823e2d21c88174a03f16a7b7eb9879b83107f",
1223 | "reference": "adb823e2d21c88174a03f16a7b7eb9879b83107f",
1224 | "shasum": ""
1225 | },
1226 | "require": {
1227 | "composer-plugin-api": "^1.1",
1228 | "php": "^7.0"
1229 | },
1230 | "require-dev": {
1231 | "composer/composer": "^1.4",
1232 | "symfony/phpunit-bridge": "^3.2.8"
1233 | },
1234 | "type": "composer-plugin",
1235 | "extra": {
1236 | "branch-alias": {
1237 | "dev-master": "1.0-dev"
1238 | },
1239 | "class": "Symfony\\Flex\\Flex"
1240 | },
1241 | "autoload": {
1242 | "psr-4": {
1243 | "Symfony\\Flex\\": "src"
1244 | }
1245 | },
1246 | "notification-url": "https://packagist.org/downloads/",
1247 | "license": [
1248 | "MIT"
1249 | ],
1250 | "authors": [
1251 | {
1252 | "name": "Fabien Potencier",
1253 | "email": "fabien.potencier@gmail.com"
1254 | }
1255 | ],
1256 | "time": "2017-12-20T00:55:17+00:00"
1257 | },
1258 | {
1259 | "name": "symfony/framework-bundle",
1260 | "version": "v4.0.2",
1261 | "source": {
1262 | "type": "git",
1263 | "url": "https://github.com/symfony/framework-bundle.git",
1264 | "reference": "82e45a486a2cbdab5d43512bea10af1681dcd8e2"
1265 | },
1266 | "dist": {
1267 | "type": "zip",
1268 | "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/82e45a486a2cbdab5d43512bea10af1681dcd8e2",
1269 | "reference": "82e45a486a2cbdab5d43512bea10af1681dcd8e2",
1270 | "shasum": ""
1271 | },
1272 | "require": {
1273 | "ext-xml": "*",
1274 | "php": "^7.1.3",
1275 | "symfony/cache": "~3.4|~4.0",
1276 | "symfony/config": "~3.4|~4.0",
1277 | "symfony/dependency-injection": "~3.4|~4.0",
1278 | "symfony/event-dispatcher": "~3.4|~4.0",
1279 | "symfony/filesystem": "~3.4|~4.0",
1280 | "symfony/finder": "~3.4|~4.0",
1281 | "symfony/http-foundation": "~3.4|~4.0",
1282 | "symfony/http-kernel": "~3.4|~4.0",
1283 | "symfony/polyfill-mbstring": "~1.0",
1284 | "symfony/routing": "~3.4|~4.0"
1285 | },
1286 | "conflict": {
1287 | "phpdocumentor/reflection-docblock": "<3.0",
1288 | "phpdocumentor/type-resolver": "<0.2.1",
1289 | "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
1290 | "symfony/asset": "<3.4",
1291 | "symfony/console": "<3.4",
1292 | "symfony/form": "<3.4",
1293 | "symfony/property-info": "<3.4",
1294 | "symfony/serializer": "<3.4",
1295 | "symfony/stopwatch": "<3.4",
1296 | "symfony/translation": "<3.4",
1297 | "symfony/validator": "<3.4",
1298 | "symfony/workflow": "<3.4"
1299 | },
1300 | "require-dev": {
1301 | "doctrine/annotations": "~1.0",
1302 | "doctrine/cache": "~1.0",
1303 | "fig/link-util": "^1.0",
1304 | "phpdocumentor/reflection-docblock": "^3.0|^4.0",
1305 | "symfony/asset": "~3.4|~4.0",
1306 | "symfony/browser-kit": "~3.4|~4.0",
1307 | "symfony/console": "~3.4|~4.0",
1308 | "symfony/css-selector": "~3.4|~4.0",
1309 | "symfony/dom-crawler": "~3.4|~4.0",
1310 | "symfony/expression-language": "~3.4|~4.0",
1311 | "symfony/form": "~3.4|~4.0",
1312 | "symfony/lock": "~3.4|~4.0",
1313 | "symfony/polyfill-intl-icu": "~1.0",
1314 | "symfony/process": "~3.4|~4.0",
1315 | "symfony/property-info": "~3.4|~4.0",
1316 | "symfony/security": "~3.4|~4.0",
1317 | "symfony/security-core": "~3.4|~4.0",
1318 | "symfony/security-csrf": "~3.4|~4.0",
1319 | "symfony/serializer": "~3.4|~4.0",
1320 | "symfony/stopwatch": "~3.4|~4.0",
1321 | "symfony/templating": "~3.4|~4.0",
1322 | "symfony/translation": "~3.4|~4.0",
1323 | "symfony/validator": "~3.4|~4.0",
1324 | "symfony/var-dumper": "~3.4|~4.0",
1325 | "symfony/web-link": "~3.4|~4.0",
1326 | "symfony/workflow": "~3.4|~4.0",
1327 | "symfony/yaml": "~3.4|~4.0",
1328 | "twig/twig": "~1.34|~2.4"
1329 | },
1330 | "suggest": {
1331 | "ext-apcu": "For best performance of the system caches",
1332 | "symfony/console": "For using the console commands",
1333 | "symfony/form": "For using forms",
1334 | "symfony/property-info": "For using the property_info service",
1335 | "symfony/serializer": "For using the serializer service",
1336 | "symfony/validator": "For using validation",
1337 | "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering",
1338 | "symfony/yaml": "For using the debug:config and lint:yaml commands"
1339 | },
1340 | "type": "symfony-bundle",
1341 | "extra": {
1342 | "branch-alias": {
1343 | "dev-master": "4.0-dev"
1344 | }
1345 | },
1346 | "autoload": {
1347 | "psr-4": {
1348 | "Symfony\\Bundle\\FrameworkBundle\\": ""
1349 | },
1350 | "exclude-from-classmap": [
1351 | "/Tests/"
1352 | ]
1353 | },
1354 | "notification-url": "https://packagist.org/downloads/",
1355 | "license": [
1356 | "MIT"
1357 | ],
1358 | "authors": [
1359 | {
1360 | "name": "Fabien Potencier",
1361 | "email": "fabien@symfony.com"
1362 | },
1363 | {
1364 | "name": "Symfony Community",
1365 | "homepage": "https://symfony.com/contributors"
1366 | }
1367 | ],
1368 | "description": "Symfony FrameworkBundle",
1369 | "homepage": "https://symfony.com",
1370 | "time": "2017-12-15T01:44:28+00:00"
1371 | },
1372 | {
1373 | "name": "symfony/http-foundation",
1374 | "version": "v4.0.3",
1375 | "source": {
1376 | "type": "git",
1377 | "url": "https://github.com/symfony/http-foundation.git",
1378 | "reference": "03fe5171e35966f43453e2e5c15d7fe65f7fb23b"
1379 | },
1380 | "dist": {
1381 | "type": "zip",
1382 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/03fe5171e35966f43453e2e5c15d7fe65f7fb23b",
1383 | "reference": "03fe5171e35966f43453e2e5c15d7fe65f7fb23b",
1384 | "shasum": ""
1385 | },
1386 | "require": {
1387 | "php": "^7.1.3",
1388 | "symfony/polyfill-mbstring": "~1.1"
1389 | },
1390 | "require-dev": {
1391 | "symfony/expression-language": "~3.4|~4.0"
1392 | },
1393 | "type": "library",
1394 | "extra": {
1395 | "branch-alias": {
1396 | "dev-master": "4.0-dev"
1397 | }
1398 | },
1399 | "autoload": {
1400 | "psr-4": {
1401 | "Symfony\\Component\\HttpFoundation\\": ""
1402 | },
1403 | "exclude-from-classmap": [
1404 | "/Tests/"
1405 | ]
1406 | },
1407 | "notification-url": "https://packagist.org/downloads/",
1408 | "license": [
1409 | "MIT"
1410 | ],
1411 | "authors": [
1412 | {
1413 | "name": "Fabien Potencier",
1414 | "email": "fabien@symfony.com"
1415 | },
1416 | {
1417 | "name": "Symfony Community",
1418 | "homepage": "https://symfony.com/contributors"
1419 | }
1420 | ],
1421 | "description": "Symfony HttpFoundation Component",
1422 | "homepage": "https://symfony.com",
1423 | "time": "2018-01-03T17:15:19+00:00"
1424 | },
1425 | {
1426 | "name": "symfony/http-kernel",
1427 | "version": "v4.0.3",
1428 | "source": {
1429 | "type": "git",
1430 | "url": "https://github.com/symfony/http-kernel.git",
1431 | "reference": "f707ed09d3b5799a26c985de480d48b48540d41a"
1432 | },
1433 | "dist": {
1434 | "type": "zip",
1435 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f707ed09d3b5799a26c985de480d48b48540d41a",
1436 | "reference": "f707ed09d3b5799a26c985de480d48b48540d41a",
1437 | "shasum": ""
1438 | },
1439 | "require": {
1440 | "php": "^7.1.3",
1441 | "psr/log": "~1.0",
1442 | "symfony/debug": "~3.4|~4.0",
1443 | "symfony/event-dispatcher": "~3.4|~4.0",
1444 | "symfony/http-foundation": "~3.4|~4.0"
1445 | },
1446 | "conflict": {
1447 | "symfony/config": "<3.4",
1448 | "symfony/dependency-injection": "<3.4",
1449 | "symfony/var-dumper": "<3.4",
1450 | "twig/twig": "<1.34|<2.4,>=2"
1451 | },
1452 | "provide": {
1453 | "psr/log-implementation": "1.0"
1454 | },
1455 | "require-dev": {
1456 | "psr/cache": "~1.0",
1457 | "symfony/browser-kit": "~3.4|~4.0",
1458 | "symfony/config": "~3.4|~4.0",
1459 | "symfony/console": "~3.4|~4.0",
1460 | "symfony/css-selector": "~3.4|~4.0",
1461 | "symfony/dependency-injection": "~3.4|~4.0",
1462 | "symfony/dom-crawler": "~3.4|~4.0",
1463 | "symfony/expression-language": "~3.4|~4.0",
1464 | "symfony/finder": "~3.4|~4.0",
1465 | "symfony/process": "~3.4|~4.0",
1466 | "symfony/routing": "~3.4|~4.0",
1467 | "symfony/stopwatch": "~3.4|~4.0",
1468 | "symfony/templating": "~3.4|~4.0",
1469 | "symfony/translation": "~3.4|~4.0",
1470 | "symfony/var-dumper": "~3.4|~4.0"
1471 | },
1472 | "suggest": {
1473 | "symfony/browser-kit": "",
1474 | "symfony/config": "",
1475 | "symfony/console": "",
1476 | "symfony/dependency-injection": "",
1477 | "symfony/var-dumper": ""
1478 | },
1479 | "type": "library",
1480 | "extra": {
1481 | "branch-alias": {
1482 | "dev-master": "4.0-dev"
1483 | }
1484 | },
1485 | "autoload": {
1486 | "psr-4": {
1487 | "Symfony\\Component\\HttpKernel\\": ""
1488 | },
1489 | "exclude-from-classmap": [
1490 | "/Tests/"
1491 | ]
1492 | },
1493 | "notification-url": "https://packagist.org/downloads/",
1494 | "license": [
1495 | "MIT"
1496 | ],
1497 | "authors": [
1498 | {
1499 | "name": "Fabien Potencier",
1500 | "email": "fabien@symfony.com"
1501 | },
1502 | {
1503 | "name": "Symfony Community",
1504 | "homepage": "https://symfony.com/contributors"
1505 | }
1506 | ],
1507 | "description": "Symfony HttpKernel Component",
1508 | "homepage": "https://symfony.com",
1509 | "time": "2018-01-05T08:54:25+00:00"
1510 | },
1511 | {
1512 | "name": "symfony/lts",
1513 | "version": "dev-master",
1514 | "source": {
1515 | "type": "git",
1516 | "url": "https://github.com/symfony/lts.git",
1517 | "reference": "396c5fca8d73d01186df37d7031321a3c0c2bf92"
1518 | },
1519 | "dist": {
1520 | "type": "zip",
1521 | "url": "https://api.github.com/repos/symfony/lts/zipball/396c5fca8d73d01186df37d7031321a3c0c2bf92",
1522 | "reference": "396c5fca8d73d01186df37d7031321a3c0c2bf92",
1523 | "shasum": ""
1524 | },
1525 | "conflict": {
1526 | "symfony/asset": ">=5",
1527 | "symfony/browser-kit": ">=5",
1528 | "symfony/cache": ">=5",
1529 | "symfony/class-loader": ">=5",
1530 | "symfony/config": ">=5",
1531 | "symfony/console": ">=5",
1532 | "symfony/css-selector": ">=5",
1533 | "symfony/debug": ">=5",
1534 | "symfony/debug-bundle": ">=5",
1535 | "symfony/dependency-injection": ">=5",
1536 | "symfony/doctrine-bridge": ">=5",
1537 | "symfony/dom-crawler": ">=5",
1538 | "symfony/dotenv": ">=5",
1539 | "symfony/event-dispatcher": ">=5",
1540 | "symfony/expression-language": ">=5",
1541 | "symfony/filesystem": ">=5",
1542 | "symfony/finder": ">=5",
1543 | "symfony/form": ">=5",
1544 | "symfony/framework-bundle": ">=5",
1545 | "symfony/http-foundation": ">=5",
1546 | "symfony/http-kernel": ">=5",
1547 | "symfony/inflector": ">=5",
1548 | "symfony/intl": ">=5",
1549 | "symfony/ldap": ">=5",
1550 | "symfony/lock": ">=5",
1551 | "symfony/monolog-bridge": ">=5",
1552 | "symfony/options-resolver": ">=5",
1553 | "symfony/process": ">=5",
1554 | "symfony/property-access": ">=5",
1555 | "symfony/property-info": ">=5",
1556 | "symfony/proxy-manager-bridge": ">=5",
1557 | "symfony/routing": ">=5",
1558 | "symfony/security": ">=5",
1559 | "symfony/security-bundle": ">=5",
1560 | "symfony/security-core": ">=5",
1561 | "symfony/security-csrf": ">=5",
1562 | "symfony/security-guard": ">=5",
1563 | "symfony/security-http": ">=5",
1564 | "symfony/serializer": ">=5",
1565 | "symfony/stopwatch": ">=5",
1566 | "symfony/symfony": ">=5",
1567 | "symfony/templating": ">=5",
1568 | "symfony/translation": ">=5",
1569 | "symfony/twig-bridge": ">=5",
1570 | "symfony/twig-bundle": ">=5",
1571 | "symfony/validator": ">=5",
1572 | "symfony/var-dumper": ">=5",
1573 | "symfony/web-link": ">=5",
1574 | "symfony/web-profiler-bundle": ">=5",
1575 | "symfony/web-server-bundle": ">=5",
1576 | "symfony/workflow": ">=5",
1577 | "symfony/yaml": ">=5"
1578 | },
1579 | "type": "metapackage",
1580 | "extra": {
1581 | "branch-alias": {
1582 | "dev-master": "4-dev"
1583 | }
1584 | },
1585 | "notification-url": "https://packagist.org/downloads/",
1586 | "license": [
1587 | "MIT"
1588 | ],
1589 | "authors": [
1590 | {
1591 | "name": "Fabien Potencier",
1592 | "email": "fabien@symfony.com"
1593 | },
1594 | {
1595 | "name": "Symfony Community",
1596 | "homepage": "https://symfony.com/contributors"
1597 | }
1598 | ],
1599 | "description": "Enforces Long Term Supported versions of Symfony components",
1600 | "homepage": "https://symfony.com",
1601 | "time": "2017-10-19T02:16:32+00:00"
1602 | },
1603 | {
1604 | "name": "symfony/polyfill-mbstring",
1605 | "version": "v1.6.0",
1606 | "source": {
1607 | "type": "git",
1608 | "url": "https://github.com/symfony/polyfill-mbstring.git",
1609 | "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296"
1610 | },
1611 | "dist": {
1612 | "type": "zip",
1613 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296",
1614 | "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296",
1615 | "shasum": ""
1616 | },
1617 | "require": {
1618 | "php": ">=5.3.3"
1619 | },
1620 | "suggest": {
1621 | "ext-mbstring": "For best performance"
1622 | },
1623 | "type": "library",
1624 | "extra": {
1625 | "branch-alias": {
1626 | "dev-master": "1.6-dev"
1627 | }
1628 | },
1629 | "autoload": {
1630 | "psr-4": {
1631 | "Symfony\\Polyfill\\Mbstring\\": ""
1632 | },
1633 | "files": [
1634 | "bootstrap.php"
1635 | ]
1636 | },
1637 | "notification-url": "https://packagist.org/downloads/",
1638 | "license": [
1639 | "MIT"
1640 | ],
1641 | "authors": [
1642 | {
1643 | "name": "Nicolas Grekas",
1644 | "email": "p@tchwork.com"
1645 | },
1646 | {
1647 | "name": "Symfony Community",
1648 | "homepage": "https://symfony.com/contributors"
1649 | }
1650 | ],
1651 | "description": "Symfony polyfill for the Mbstring extension",
1652 | "homepage": "https://symfony.com",
1653 | "keywords": [
1654 | "compatibility",
1655 | "mbstring",
1656 | "polyfill",
1657 | "portable",
1658 | "shim"
1659 | ],
1660 | "time": "2017-10-11T12:05:26+00:00"
1661 | },
1662 | {
1663 | "name": "symfony/routing",
1664 | "version": "v4.0.2",
1665 | "source": {
1666 | "type": "git",
1667 | "url": "https://github.com/symfony/routing.git",
1668 | "reference": "972810def5cae044d19195045f7eb418141bf37b"
1669 | },
1670 | "dist": {
1671 | "type": "zip",
1672 | "url": "https://api.github.com/repos/symfony/routing/zipball/972810def5cae044d19195045f7eb418141bf37b",
1673 | "reference": "972810def5cae044d19195045f7eb418141bf37b",
1674 | "shasum": ""
1675 | },
1676 | "require": {
1677 | "php": "^7.1.3"
1678 | },
1679 | "conflict": {
1680 | "symfony/config": "<3.4",
1681 | "symfony/dependency-injection": "<3.4",
1682 | "symfony/yaml": "<3.4"
1683 | },
1684 | "require-dev": {
1685 | "doctrine/annotations": "~1.0",
1686 | "doctrine/common": "~2.2",
1687 | "psr/log": "~1.0",
1688 | "symfony/config": "~3.4|~4.0",
1689 | "symfony/dependency-injection": "~3.4|~4.0",
1690 | "symfony/expression-language": "~3.4|~4.0",
1691 | "symfony/http-foundation": "~3.4|~4.0",
1692 | "symfony/yaml": "~3.4|~4.0"
1693 | },
1694 | "suggest": {
1695 | "doctrine/annotations": "For using the annotation loader",
1696 | "symfony/config": "For using the all-in-one router or any loader",
1697 | "symfony/dependency-injection": "For loading routes from a service",
1698 | "symfony/expression-language": "For using expression matching",
1699 | "symfony/http-foundation": "For using a Symfony Request object",
1700 | "symfony/yaml": "For using the YAML loader"
1701 | },
1702 | "type": "library",
1703 | "extra": {
1704 | "branch-alias": {
1705 | "dev-master": "4.0-dev"
1706 | }
1707 | },
1708 | "autoload": {
1709 | "psr-4": {
1710 | "Symfony\\Component\\Routing\\": ""
1711 | },
1712 | "exclude-from-classmap": [
1713 | "/Tests/"
1714 | ]
1715 | },
1716 | "notification-url": "https://packagist.org/downloads/",
1717 | "license": [
1718 | "MIT"
1719 | ],
1720 | "authors": [
1721 | {
1722 | "name": "Fabien Potencier",
1723 | "email": "fabien@symfony.com"
1724 | },
1725 | {
1726 | "name": "Symfony Community",
1727 | "homepage": "https://symfony.com/contributors"
1728 | }
1729 | ],
1730 | "description": "Symfony Routing Component",
1731 | "homepage": "https://symfony.com",
1732 | "keywords": [
1733 | "router",
1734 | "routing",
1735 | "uri",
1736 | "url"
1737 | ],
1738 | "time": "2017-12-14T22:39:22+00:00"
1739 | },
1740 | {
1741 | "name": "symfony/twig-bridge",
1742 | "version": "v4.0.2",
1743 | "source": {
1744 | "type": "git",
1745 | "url": "https://github.com/symfony/twig-bridge.git",
1746 | "reference": "aeb221936ad39c579b7e002dfd4e7544a5d666f6"
1747 | },
1748 | "dist": {
1749 | "type": "zip",
1750 | "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/aeb221936ad39c579b7e002dfd4e7544a5d666f6",
1751 | "reference": "aeb221936ad39c579b7e002dfd4e7544a5d666f6",
1752 | "shasum": ""
1753 | },
1754 | "require": {
1755 | "php": "^7.1.3",
1756 | "twig/twig": "^1.35|^2.4.4"
1757 | },
1758 | "conflict": {
1759 | "symfony/console": "<3.4",
1760 | "symfony/form": "<3.4"
1761 | },
1762 | "require-dev": {
1763 | "symfony/asset": "~3.4|~4.0",
1764 | "symfony/console": "~3.4|~4.0",
1765 | "symfony/dependency-injection": "~3.4|~4.0",
1766 | "symfony/expression-language": "~3.4|~4.0",
1767 | "symfony/finder": "~3.4|~4.0",
1768 | "symfony/form": "~3.4|~4.0",
1769 | "symfony/http-foundation": "~3.4|~4.0",
1770 | "symfony/http-kernel": "~3.4|~4.0",
1771 | "symfony/polyfill-intl-icu": "~1.0",
1772 | "symfony/routing": "~3.4|~4.0",
1773 | "symfony/security": "~3.4|~4.0",
1774 | "symfony/security-acl": "~2.8|~3.0",
1775 | "symfony/stopwatch": "~3.4|~4.0",
1776 | "symfony/templating": "~3.4|~4.0",
1777 | "symfony/translation": "~3.4|~4.0",
1778 | "symfony/var-dumper": "~3.4|~4.0",
1779 | "symfony/web-link": "~3.4|~4.0",
1780 | "symfony/workflow": "~3.4|~4.0",
1781 | "symfony/yaml": "~3.4|~4.0"
1782 | },
1783 | "suggest": {
1784 | "symfony/asset": "For using the AssetExtension",
1785 | "symfony/expression-language": "For using the ExpressionExtension",
1786 | "symfony/finder": "",
1787 | "symfony/form": "For using the FormExtension",
1788 | "symfony/http-kernel": "For using the HttpKernelExtension",
1789 | "symfony/routing": "For using the RoutingExtension",
1790 | "symfony/security": "For using the SecurityExtension",
1791 | "symfony/stopwatch": "For using the StopwatchExtension",
1792 | "symfony/templating": "For using the TwigEngine",
1793 | "symfony/translation": "For using the TranslationExtension",
1794 | "symfony/var-dumper": "For using the DumpExtension",
1795 | "symfony/web-link": "For using the WebLinkExtension",
1796 | "symfony/yaml": "For using the YamlExtension"
1797 | },
1798 | "type": "symfony-bridge",
1799 | "extra": {
1800 | "branch-alias": {
1801 | "dev-master": "4.0-dev"
1802 | }
1803 | },
1804 | "autoload": {
1805 | "psr-4": {
1806 | "Symfony\\Bridge\\Twig\\": ""
1807 | },
1808 | "exclude-from-classmap": [
1809 | "/Tests/"
1810 | ]
1811 | },
1812 | "notification-url": "https://packagist.org/downloads/",
1813 | "license": [
1814 | "MIT"
1815 | ],
1816 | "authors": [
1817 | {
1818 | "name": "Fabien Potencier",
1819 | "email": "fabien@symfony.com"
1820 | },
1821 | {
1822 | "name": "Symfony Community",
1823 | "homepage": "https://symfony.com/contributors"
1824 | }
1825 | ],
1826 | "description": "Symfony Twig Bridge",
1827 | "homepage": "https://symfony.com",
1828 | "time": "2017-12-12T08:41:51+00:00"
1829 | },
1830 | {
1831 | "name": "symfony/twig-bundle",
1832 | "version": "v4.0.2",
1833 | "source": {
1834 | "type": "git",
1835 | "url": "https://github.com/symfony/twig-bundle.git",
1836 | "reference": "77381f8b99b319dc83e609c66942eb3a0a5b066d"
1837 | },
1838 | "dist": {
1839 | "type": "zip",
1840 | "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/77381f8b99b319dc83e609c66942eb3a0a5b066d",
1841 | "reference": "77381f8b99b319dc83e609c66942eb3a0a5b066d",
1842 | "shasum": ""
1843 | },
1844 | "require": {
1845 | "php": "^7.1.3",
1846 | "symfony/config": "~3.4|~4.0",
1847 | "symfony/http-foundation": "~3.4|~4.0",
1848 | "symfony/http-kernel": "~3.4|~4.0",
1849 | "symfony/twig-bridge": "~3.4|~4.0",
1850 | "twig/twig": "~1.34|~2.4"
1851 | },
1852 | "conflict": {
1853 | "symfony/dependency-injection": "<3.4",
1854 | "symfony/event-dispatcher": "<3.4"
1855 | },
1856 | "require-dev": {
1857 | "doctrine/annotations": "~1.0",
1858 | "doctrine/cache": "~1.0",
1859 | "symfony/asset": "~3.4|~4.0",
1860 | "symfony/dependency-injection": "~3.4|~4.0",
1861 | "symfony/expression-language": "~3.4|~4.0",
1862 | "symfony/finder": "~3.4|~4.0",
1863 | "symfony/form": "~3.4|~4.0",
1864 | "symfony/framework-bundle": "~3.4|~4.0",
1865 | "symfony/routing": "~3.4|~4.0",
1866 | "symfony/stopwatch": "~3.4|~4.0",
1867 | "symfony/templating": "~3.4|~4.0",
1868 | "symfony/web-link": "~3.4|~4.0",
1869 | "symfony/yaml": "~3.4|~4.0"
1870 | },
1871 | "type": "symfony-bundle",
1872 | "extra": {
1873 | "branch-alias": {
1874 | "dev-master": "4.0-dev"
1875 | }
1876 | },
1877 | "autoload": {
1878 | "psr-4": {
1879 | "Symfony\\Bundle\\TwigBundle\\": ""
1880 | },
1881 | "exclude-from-classmap": [
1882 | "/Tests/"
1883 | ]
1884 | },
1885 | "notification-url": "https://packagist.org/downloads/",
1886 | "license": [
1887 | "MIT"
1888 | ],
1889 | "authors": [
1890 | {
1891 | "name": "Fabien Potencier",
1892 | "email": "fabien@symfony.com"
1893 | },
1894 | {
1895 | "name": "Symfony Community",
1896 | "homepage": "https://symfony.com/contributors"
1897 | }
1898 | ],
1899 | "description": "Symfony TwigBundle",
1900 | "homepage": "https://symfony.com",
1901 | "time": "2017-12-04T12:31:58+00:00"
1902 | },
1903 | {
1904 | "name": "symfony/webpack-encore-pack",
1905 | "version": "v1.0.2",
1906 | "source": {
1907 | "type": "git",
1908 | "url": "https://github.com/symfony/webpack-encore-pack.git",
1909 | "reference": "f9f4e91659e5f55de370d6aebe77e64bce35e4d3"
1910 | },
1911 | "dist": {
1912 | "type": "zip",
1913 | "url": "https://api.github.com/repos/symfony/webpack-encore-pack/zipball/f9f4e91659e5f55de370d6aebe77e64bce35e4d3",
1914 | "reference": "f9f4e91659e5f55de370d6aebe77e64bce35e4d3",
1915 | "shasum": ""
1916 | },
1917 | "type": "symfony-pack",
1918 | "extra": {
1919 | "thanks": {
1920 | "name": "symfony/webpack-encore",
1921 | "url": "https://github.com/symfony/webpack-encore"
1922 | }
1923 | },
1924 | "notification-url": "https://packagist.org/downloads/",
1925 | "license": [
1926 | "MIT"
1927 | ],
1928 | "description": "A pack for Symfony Encore",
1929 | "time": "2017-12-21T02:20:09+00:00"
1930 | },
1931 | {
1932 | "name": "symfony/yaml",
1933 | "version": "v4.0.2",
1934 | "source": {
1935 | "type": "git",
1936 | "url": "https://github.com/symfony/yaml.git",
1937 | "reference": "a5ee52d155f06ad23b19eb63c31228ff56ad1116"
1938 | },
1939 | "dist": {
1940 | "type": "zip",
1941 | "url": "https://api.github.com/repos/symfony/yaml/zipball/a5ee52d155f06ad23b19eb63c31228ff56ad1116",
1942 | "reference": "a5ee52d155f06ad23b19eb63c31228ff56ad1116",
1943 | "shasum": ""
1944 | },
1945 | "require": {
1946 | "php": "^7.1.3"
1947 | },
1948 | "conflict": {
1949 | "symfony/console": "<3.4"
1950 | },
1951 | "require-dev": {
1952 | "symfony/console": "~3.4|~4.0"
1953 | },
1954 | "suggest": {
1955 | "symfony/console": "For validating YAML files using the lint command"
1956 | },
1957 | "type": "library",
1958 | "extra": {
1959 | "branch-alias": {
1960 | "dev-master": "4.0-dev"
1961 | }
1962 | },
1963 | "autoload": {
1964 | "psr-4": {
1965 | "Symfony\\Component\\Yaml\\": ""
1966 | },
1967 | "exclude-from-classmap": [
1968 | "/Tests/"
1969 | ]
1970 | },
1971 | "notification-url": "https://packagist.org/downloads/",
1972 | "license": [
1973 | "MIT"
1974 | ],
1975 | "authors": [
1976 | {
1977 | "name": "Fabien Potencier",
1978 | "email": "fabien@symfony.com"
1979 | },
1980 | {
1981 | "name": "Symfony Community",
1982 | "homepage": "https://symfony.com/contributors"
1983 | }
1984 | ],
1985 | "description": "Symfony Yaml Component",
1986 | "homepage": "https://symfony.com",
1987 | "time": "2017-12-12T08:41:51+00:00"
1988 | },
1989 | {
1990 | "name": "twig/twig",
1991 | "version": "v2.4.4",
1992 | "source": {
1993 | "type": "git",
1994 | "url": "https://github.com/twigphp/Twig.git",
1995 | "reference": "eddb97148ad779f27e670e1e3f19fb323aedafeb"
1996 | },
1997 | "dist": {
1998 | "type": "zip",
1999 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/eddb97148ad779f27e670e1e3f19fb323aedafeb",
2000 | "reference": "eddb97148ad779f27e670e1e3f19fb323aedafeb",
2001 | "shasum": ""
2002 | },
2003 | "require": {
2004 | "php": "^7.0",
2005 | "symfony/polyfill-mbstring": "~1.0"
2006 | },
2007 | "require-dev": {
2008 | "psr/container": "^1.0",
2009 | "symfony/debug": "~2.7",
2010 | "symfony/phpunit-bridge": "~3.3@dev"
2011 | },
2012 | "type": "library",
2013 | "extra": {
2014 | "branch-alias": {
2015 | "dev-master": "2.4-dev"
2016 | }
2017 | },
2018 | "autoload": {
2019 | "psr-0": {
2020 | "Twig_": "lib/"
2021 | },
2022 | "psr-4": {
2023 | "Twig\\": "src/"
2024 | }
2025 | },
2026 | "notification-url": "https://packagist.org/downloads/",
2027 | "license": [
2028 | "BSD-3-Clause"
2029 | ],
2030 | "authors": [
2031 | {
2032 | "name": "Fabien Potencier",
2033 | "email": "fabien@symfony.com",
2034 | "homepage": "http://fabien.potencier.org",
2035 | "role": "Lead Developer"
2036 | },
2037 | {
2038 | "name": "Armin Ronacher",
2039 | "email": "armin.ronacher@active-4.com",
2040 | "role": "Project Founder"
2041 | },
2042 | {
2043 | "name": "Twig Team",
2044 | "homepage": "http://twig.sensiolabs.org/contributors",
2045 | "role": "Contributors"
2046 | }
2047 | ],
2048 | "description": "Twig, the flexible, fast, and secure template language for PHP",
2049 | "homepage": "http://twig.sensiolabs.org",
2050 | "keywords": [
2051 | "templating"
2052 | ],
2053 | "time": "2017-09-27T18:10:31+00:00"
2054 | }
2055 | ],
2056 | "packages-dev": [
2057 | {
2058 | "name": "symfony/dotenv",
2059 | "version": "v4.0.2",
2060 | "source": {
2061 | "type": "git",
2062 | "url": "https://github.com/symfony/dotenv.git",
2063 | "reference": "ffcaeab01e42b0c40669add2aa8e77f79ddb9389"
2064 | },
2065 | "dist": {
2066 | "type": "zip",
2067 | "url": "https://api.github.com/repos/symfony/dotenv/zipball/ffcaeab01e42b0c40669add2aa8e77f79ddb9389",
2068 | "reference": "ffcaeab01e42b0c40669add2aa8e77f79ddb9389",
2069 | "shasum": ""
2070 | },
2071 | "require": {
2072 | "php": "^7.1.3"
2073 | },
2074 | "require-dev": {
2075 | "symfony/process": "~3.4|~4.0"
2076 | },
2077 | "type": "library",
2078 | "extra": {
2079 | "branch-alias": {
2080 | "dev-master": "4.0-dev"
2081 | }
2082 | },
2083 | "autoload": {
2084 | "psr-4": {
2085 | "Symfony\\Component\\Dotenv\\": ""
2086 | },
2087 | "exclude-from-classmap": [
2088 | "/Tests/"
2089 | ]
2090 | },
2091 | "notification-url": "https://packagist.org/downloads/",
2092 | "license": [
2093 | "MIT"
2094 | ],
2095 | "authors": [
2096 | {
2097 | "name": "Fabien Potencier",
2098 | "email": "fabien@symfony.com"
2099 | },
2100 | {
2101 | "name": "Symfony Community",
2102 | "homepage": "https://symfony.com/contributors"
2103 | }
2104 | ],
2105 | "description": "Registers environment variables from a .env file",
2106 | "homepage": "https://symfony.com",
2107 | "keywords": [
2108 | "dotenv",
2109 | "env",
2110 | "environment"
2111 | ],
2112 | "time": "2017-12-08T15:46:13+00:00"
2113 | },
2114 | {
2115 | "name": "symfony/process",
2116 | "version": "v4.0.3",
2117 | "source": {
2118 | "type": "git",
2119 | "url": "https://github.com/symfony/process.git",
2120 | "reference": "2145b3e8137e463b1051b79440a59b38220944f0"
2121 | },
2122 | "dist": {
2123 | "type": "zip",
2124 | "url": "https://api.github.com/repos/symfony/process/zipball/2145b3e8137e463b1051b79440a59b38220944f0",
2125 | "reference": "2145b3e8137e463b1051b79440a59b38220944f0",
2126 | "shasum": ""
2127 | },
2128 | "require": {
2129 | "php": "^7.1.3"
2130 | },
2131 | "type": "library",
2132 | "extra": {
2133 | "branch-alias": {
2134 | "dev-master": "4.0-dev"
2135 | }
2136 | },
2137 | "autoload": {
2138 | "psr-4": {
2139 | "Symfony\\Component\\Process\\": ""
2140 | },
2141 | "exclude-from-classmap": [
2142 | "/Tests/"
2143 | ]
2144 | },
2145 | "notification-url": "https://packagist.org/downloads/",
2146 | "license": [
2147 | "MIT"
2148 | ],
2149 | "authors": [
2150 | {
2151 | "name": "Fabien Potencier",
2152 | "email": "fabien@symfony.com"
2153 | },
2154 | {
2155 | "name": "Symfony Community",
2156 | "homepage": "https://symfony.com/contributors"
2157 | }
2158 | ],
2159 | "description": "Symfony Process Component",
2160 | "homepage": "https://symfony.com",
2161 | "time": "2018-01-03T07:38:00+00:00"
2162 | },
2163 | {
2164 | "name": "symfony/web-server-bundle",
2165 | "version": "v4.0.3",
2166 | "source": {
2167 | "type": "git",
2168 | "url": "https://github.com/symfony/web-server-bundle.git",
2169 | "reference": "20ad52df8164d2eae029e6bb24356956c52380be"
2170 | },
2171 | "dist": {
2172 | "type": "zip",
2173 | "url": "https://api.github.com/repos/symfony/web-server-bundle/zipball/20ad52df8164d2eae029e6bb24356956c52380be",
2174 | "reference": "20ad52df8164d2eae029e6bb24356956c52380be",
2175 | "shasum": ""
2176 | },
2177 | "require": {
2178 | "php": "^7.1.3",
2179 | "symfony/config": "~3.4|~4.0",
2180 | "symfony/console": "~3.4|~4.0",
2181 | "symfony/dependency-injection": "~3.4|~4.0",
2182 | "symfony/http-kernel": "~3.4|~4.0",
2183 | "symfony/process": "^3.4.2|^4.0.2"
2184 | },
2185 | "suggest": {
2186 | "symfony/expression-language": "For using the filter option of the log server.",
2187 | "symfony/monolog-bridge": "For using the log server."
2188 | },
2189 | "type": "symfony-bundle",
2190 | "extra": {
2191 | "branch-alias": {
2192 | "dev-master": "4.0-dev"
2193 | }
2194 | },
2195 | "autoload": {
2196 | "psr-4": {
2197 | "Symfony\\Bundle\\WebServerBundle\\": ""
2198 | },
2199 | "exclude-from-classmap": [
2200 | "/Tests/"
2201 | ]
2202 | },
2203 | "notification-url": "https://packagist.org/downloads/",
2204 | "license": [
2205 | "MIT"
2206 | ],
2207 | "authors": [
2208 | {
2209 | "name": "Fabien Potencier",
2210 | "email": "fabien@symfony.com"
2211 | },
2212 | {
2213 | "name": "Symfony Community",
2214 | "homepage": "https://symfony.com/contributors"
2215 | }
2216 | ],
2217 | "description": "Symfony WebServerBundle",
2218 | "homepage": "https://symfony.com",
2219 | "time": "2018-01-03T17:15:19+00:00"
2220 | }
2221 | ],
2222 | "aliases": [],
2223 | "minimum-stability": "stable",
2224 | "stability-flags": {
2225 | "symfony/lts": 20
2226 | },
2227 | "prefer-stable": false,
2228 | "prefer-lowest": false,
2229 | "platform": {
2230 | "php": "^7.1.3",
2231 | "ext-iconv": "*"
2232 | },
2233 | "platform-dev": []
2234 | }
2235 |
--------------------------------------------------------------------------------
/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\WebServerBundle\WebServerBundle::class => ['dev' => true],
8 | ];
9 |
--------------------------------------------------------------------------------
/config/packages/dev/routing.yaml:
--------------------------------------------------------------------------------
1 | framework:
2 | router:
3 | strict_requirements: true
4 |
--------------------------------------------------------------------------------
/config/packages/framework.yaml:
--------------------------------------------------------------------------------
1 | framework:
2 | secret: '%env(APP_SECRET)%'
3 | #default_locale: en
4 | #csrf_protection: ~
5 | #http_method_override: true
6 |
7 | # uncomment this entire section to enable sessions
8 | #session:
9 | # # With this config, PHP's native session handling is used
10 | # handler_id: ~
11 |
12 | #esi: ~
13 | #fragments: ~
14 | php_errors:
15 | log: true
16 |
--------------------------------------------------------------------------------
/config/packages/routing.yaml:
--------------------------------------------------------------------------------
1 | framework:
2 | router:
3 | strict_requirements: ~
4 |
--------------------------------------------------------------------------------
/config/packages/test/framework.yaml:
--------------------------------------------------------------------------------
1 | framework:
2 | test: ~
3 | # Uncomment this section if you're using sessions
4 | #session:
5 | # storage_id: session.storage.mock_file
6 |
--------------------------------------------------------------------------------
/config/packages/twig.yaml:
--------------------------------------------------------------------------------
1 | twig:
2 | paths: ['%kernel.project_dir%/templates']
3 | debug: '%kernel.debug%'
4 | strict_variables: '%kernel.debug%'
5 |
--------------------------------------------------------------------------------
/config/routes.yaml:
--------------------------------------------------------------------------------
1 | #index:
2 | # path: /
3 | # controller: App\Controller\DefaultController::index
4 |
--------------------------------------------------------------------------------
/config/routes/annotations.yaml:
--------------------------------------------------------------------------------
1 | controllers:
2 | resource: ../../src/Controller/
3 | type: annotation
4 |
--------------------------------------------------------------------------------
/config/routes/dev/twig.yaml:
--------------------------------------------------------------------------------
1 | _errors:
2 | resource: '@TwigBundle/Resources/config/routing/errors.xml'
3 | prefix: /_error
4 |
--------------------------------------------------------------------------------
/config/services.yaml:
--------------------------------------------------------------------------------
1 | # Put parameters here that don't need to change on each machine where the app is deployed
2 | # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
3 | parameters:
4 |
5 | services:
6 | # default configuration for services in *this* file
7 | _defaults:
8 | autowire: true # Automatically injects dependencies in your services.
9 | autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
10 | public: false # Allows optimizing the container by removing unused services; this also means
11 | # fetching services directly from the container via $container->get() won't work.
12 | # The best practice is to be explicit about your dependencies anyway.
13 |
14 | # makes classes in src/ available to be used as services
15 | # this creates a service per class whose id is the fully-qualified class name
16 | App\:
17 | resource: '../src/*'
18 | exclude: '../src/{Entity,Migrations,Tests}'
19 |
20 | # controllers are imported separately to make sure services can be injected
21 | # as action arguments even if you don't extend any base controller class
22 | App\Controller\:
23 | resource: '../src/Controller'
24 | tags: ['controller.service_arguments']
25 |
26 | # add more service definitions when explicit configuration is needed
27 | # please note that last definitions always *replace* previous ones
28 |
--------------------------------------------------------------------------------
/final-result.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zorfling/react-symfony-4-starter/e56c50709e8a12c0a7824c783de1f0ff8c98eb9a/final-result.png
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "devDependencies": {
3 | "@symfony/webpack-encore": "^0.17.0",
4 | "babel-preset-react": "^6.24.1"
5 | },
6 | "license": "UNLICENSED",
7 | "private": true,
8 | "scripts": {
9 | "dev-server": "encore dev-server",
10 | "dev": "encore dev",
11 | "watch": "encore dev --watch",
12 | "build": "encore production"
13 | },
14 | "dependencies": {
15 | "material-ui": "^0.20.0",
16 | "prop-types": "^15.6.0",
17 | "react": "^16.2.0",
18 | "react-dom": "^16.2.0"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/public/index.php:
--------------------------------------------------------------------------------
1 | load(__DIR__.'/../.env');
16 | }
17 |
18 | if ($_SERVER['APP_DEBUG'] ?? ('prod' !== ($_SERVER['APP_ENV'] ?? 'dev'))) {
19 | umask(0000);
20 |
21 | Debug::enable();
22 | }
23 |
24 | if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) {
25 | Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST);
26 | }
27 |
28 | if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) {
29 | Request::setTrustedHosts(explode(',', $trustedHosts));
30 | }
31 |
32 | $kernel = new Kernel($_SERVER['APP_ENV'] ?? 'dev', $_SERVER['APP_DEBUG'] ?? ('prod' !== ($_SERVER['APP_ENV'] ?? 'dev')));
33 | $request = Request::createFromGlobals();
34 | $response = $kernel->handle($request);
35 | $response->send();
36 | $kernel->terminate($request, $response);
37 |
--------------------------------------------------------------------------------
/src/Controller/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zorfling/react-symfony-4-starter/e56c50709e8a12c0a7824c783de1f0ff8c98eb9a/src/Controller/.gitignore
--------------------------------------------------------------------------------
/src/Controller/DefaultController.php:
--------------------------------------------------------------------------------
1 | render('Default/index.html.twig', []);
17 | }
18 |
19 | /**
20 | * @Route("/data", name="data")
21 | */
22 | public function dataAction()
23 | {
24 | return new JsonResponse([
25 | [
26 | 'id' => 1,
27 | 'author' => 'Chris Colborne',
28 | 'avatarUrl' => 'http://1.gravatar.com/avatar/13dbc56733c2cc66fbc698cdb07fec12',
29 | 'title' => 'Bitter Predation',
30 | 'description' => 'Thirteen thin, round towers form an almost perfectly squared barrier around this marvelous castle and are connected by big, thin walls made of light pink stone. Rough windows are scattered thinly around the walls in fairly symmetrical patterns, along with overhanging crenelations for archers and artillery.',
31 | ],
32 | [
33 | 'id' => 2,
34 | 'author' => 'Louanne Perez',
35 | 'avatarUrl' => 'https://randomuser.me/api/portraits/thumb/women/18.jpg',
36 | 'title' => 'Strangers of the Ambitious',
37 | 'description' => "A huge gate with thick metal doors, a regular bridge and large crenelations offers a warm haven within these cold, isolated landsand it's the only way in, at least to those unfamiliar with the castle and its surroundings.",
38 | ],
39 | [
40 | 'id' => 3,
41 | 'author' => 'Theodorus Dietvorst',
42 | 'avatarUrl' => 'https://randomuser.me/api/portraits/thumb/men/49.jpg',
43 | 'title' => 'Outsiders of the Mysterious',
44 | 'description' => "Plain fields of a type of grass cover most of the fields outside of the castle, adding to the castle's aesthetics. This castle is relatively new, but so far it stood its ground with ease and it'll likely do so for ages to come.",
45 | ],
46 | ]);
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/Kernel.php:
--------------------------------------------------------------------------------
1 | getProjectDir().'/var/cache/'.$this->environment;
20 | }
21 |
22 | public function getLogDir()
23 | {
24 | return $this->getProjectDir().'/var/log';
25 | }
26 |
27 | public function registerBundles()
28 | {
29 | $contents = require $this->getProjectDir().'/config/bundles.php';
30 | foreach ($contents as $class => $envs) {
31 | if (isset($envs['all']) || isset($envs[$this->environment])) {
32 | yield new $class();
33 | }
34 | }
35 | }
36 |
37 | protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader)
38 | {
39 | $container->setParameter('container.autowiring.strict_mode', true);
40 | $container->setParameter('container.dumper.inline_class_loader', true);
41 | $confDir = $this->getProjectDir().'/config';
42 | $loader->load($confDir.'/packages/*'.self::CONFIG_EXTS, 'glob');
43 | if (is_dir($confDir.'/packages/'.$this->environment)) {
44 | $loader->load($confDir.'/packages/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob');
45 | }
46 | $loader->load($confDir.'/services'.self::CONFIG_EXTS, 'glob');
47 | $loader->load($confDir.'/services_'.$this->environment.self::CONFIG_EXTS, 'glob');
48 | }
49 |
50 | protected function configureRoutes(RouteCollectionBuilder $routes)
51 | {
52 | $confDir = $this->getProjectDir().'/config';
53 | if (is_dir($confDir.'/routes/')) {
54 | $routes->import($confDir.'/routes/*'.self::CONFIG_EXTS, '/', 'glob');
55 | }
56 | if (is_dir($confDir.'/routes/'.$this->environment)) {
57 | $routes->import($confDir.'/routes/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob');
58 | }
59 | $routes->import($confDir.'/routes'.self::CONFIG_EXTS, '/', 'glob');
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/symfony.lock:
--------------------------------------------------------------------------------
1 | {
2 | "doctrine/annotations": {
3 | "version": "1.0",
4 | "recipe": {
5 | "repo": "github.com/symfony/recipes",
6 | "branch": "master",
7 | "version": "1.0",
8 | "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672"
9 | }
10 | },
11 | "doctrine/cache": {
12 | "version": "v1.7.1"
13 | },
14 | "doctrine/collections": {
15 | "version": "v1.5.0"
16 | },
17 | "doctrine/common": {
18 | "version": "v2.8.1"
19 | },
20 | "doctrine/inflector": {
21 | "version": "v1.2.0"
22 | },
23 | "doctrine/lexer": {
24 | "version": "v1.0.1"
25 | },
26 | "psr/cache": {
27 | "version": "1.0.1"
28 | },
29 | "psr/container": {
30 | "version": "1.0.0"
31 | },
32 | "psr/log": {
33 | "version": "1.0.2"
34 | },
35 | "psr/simple-cache": {
36 | "version": "1.0.0"
37 | },
38 | "sensio/framework-extra-bundle": {
39 | "version": "4.0",
40 | "recipe": {
41 | "repo": "github.com/symfony/recipes",
42 | "branch": "master",
43 | "version": "4.0",
44 | "ref": "aaddfdf43cdecd4cf91f992052d76c2cadc04543"
45 | }
46 | },
47 | "symfony/asset": {
48 | "version": "v4.0.3"
49 | },
50 | "symfony/cache": {
51 | "version": "v4.0.2"
52 | },
53 | "symfony/config": {
54 | "version": "v4.0.2"
55 | },
56 | "symfony/console": {
57 | "version": "3.3",
58 | "recipe": {
59 | "repo": "github.com/symfony/recipes",
60 | "branch": "master",
61 | "version": "3.3",
62 | "ref": "9f94d3ea453cd8a3b95db7f82592d7344fe3a76a"
63 | }
64 | },
65 | "symfony/debug": {
66 | "version": "v4.0.2"
67 | },
68 | "symfony/dependency-injection": {
69 | "version": "v4.0.2"
70 | },
71 | "symfony/dotenv": {
72 | "version": "v4.0.2"
73 | },
74 | "symfony/event-dispatcher": {
75 | "version": "v4.0.2"
76 | },
77 | "symfony/filesystem": {
78 | "version": "v4.0.2"
79 | },
80 | "symfony/finder": {
81 | "version": "v4.0.2"
82 | },
83 | "symfony/flex": {
84 | "version": "1.0",
85 | "recipe": {
86 | "repo": "github.com/symfony/recipes",
87 | "branch": "master",
88 | "version": "1.0",
89 | "ref": "cc1afd81841db36fbef982fe56b48ade6716fac4"
90 | }
91 | },
92 | "symfony/framework-bundle": {
93 | "version": "3.3",
94 | "recipe": {
95 | "repo": "github.com/symfony/recipes",
96 | "branch": "master",
97 | "version": "3.3",
98 | "ref": "70e6c7b1c83d975cf1ca40f9685feeb009d70792"
99 | }
100 | },
101 | "symfony/http-foundation": {
102 | "version": "v4.0.2"
103 | },
104 | "symfony/http-kernel": {
105 | "version": "v4.0.2"
106 | },
107 | "symfony/lts": {
108 | "version": "4-dev"
109 | },
110 | "symfony/polyfill-mbstring": {
111 | "version": "v1.6.0"
112 | },
113 | "symfony/process": {
114 | "version": "v4.0.3"
115 | },
116 | "symfony/routing": {
117 | "version": "4.0",
118 | "recipe": {
119 | "repo": "github.com/symfony/recipes",
120 | "branch": "master",
121 | "version": "4.0",
122 | "ref": "cda8b550123383d25827705d05a42acf6819fe4e"
123 | }
124 | },
125 | "symfony/twig-bridge": {
126 | "version": "v4.0.2"
127 | },
128 | "symfony/twig-bundle": {
129 | "version": "3.3",
130 | "recipe": {
131 | "repo": "github.com/symfony/recipes",
132 | "branch": "master",
133 | "version": "3.3",
134 | "ref": "f75ac166398e107796ca94cc57fa1edaa06ec47f"
135 | }
136 | },
137 | "symfony/web-server-bundle": {
138 | "version": "3.3",
139 | "recipe": {
140 | "repo": "github.com/symfony/recipes",
141 | "branch": "master",
142 | "version": "3.3",
143 | "ref": "c72d107d077f1654428edaed69415d0228c1aefe"
144 | }
145 | },
146 | "symfony/webpack-encore-pack": {
147 | "version": "1.0",
148 | "recipe": {
149 | "repo": "github.com/symfony/recipes",
150 | "branch": "master",
151 | "version": "1.0",
152 | "ref": "a2f276eff6e95ca94be135d2d3e5c1247c6f8807"
153 | }
154 | },
155 | "symfony/yaml": {
156 | "version": "v4.0.2"
157 | },
158 | "twig/twig": {
159 | "version": "v2.4.4"
160 | }
161 | }
162 |
--------------------------------------------------------------------------------
/templates/Default/index.html.twig:
--------------------------------------------------------------------------------
1 | {% extends 'base.html.twig' %}
2 |
3 | {% block body %}
4 |
5 |
6 | {% endblock %}
--------------------------------------------------------------------------------
/templates/base.html.twig:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {% block title %}Welcome to React Symfony 4 Starter!{% endblock %}
6 | {% block stylesheets %}
7 |
8 | {% endblock %}
9 |
10 |
11 |
12 | React Symfony 4 Starter
13 |
14 | {% block body %}{% endblock %}
15 | {% block javascripts %}{% endblock %}
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | var Encore = require('@symfony/webpack-encore');
2 |
3 | Encore
4 | // the project directory where compiled assets will be stored
5 | .setOutputPath('public/build/')
6 | // the public path used by the web server to access the previous directory
7 | .setPublicPath('/build')
8 | .cleanupOutputBeforeBuild()
9 | .enableSourceMaps(!Encore.isProduction())
10 | .enableVersioning(Encore.isProduction())
11 | .addEntry('app', './assets/js/app.js')
12 | .enableReactPreset();
13 |
14 | module.exports = Encore.getWebpackConfig();
15 |
--------------------------------------------------------------------------------