├── .gitignore
├── LICENSE
├── README.md
├── UPGRADE-2.2.md
├── UPGRADE.md
├── app
├── .htaccess
├── AppCache.php
├── AppKernel.php
├── Resources
│ └── views
│ │ └── base.html.twig
├── SymfonyRequirements.php
├── autoload.php
├── cache
│ └── .gitkeep
├── check.php
├── config
│ ├── config.yml
│ ├── config_dev.yml
│ ├── config_prod.yml
│ ├── config_test.yml
│ ├── parameters.yml
│ ├── routing.yml
│ ├── routing_dev.yml
│ └── security.yml
├── console
├── logs
│ └── .gitkeep
└── phpunit.xml.dist
├── composer.json
├── composer.lock
├── src
├── .htaccess
└── Acme
│ └── DemoBundle
│ ├── AcmeDemoBundle.php
│ ├── Controller
│ ├── DemoController.php
│ ├── SecuredController.php
│ └── WelcomeController.php
│ ├── DependencyInjection
│ └── AcmeDemoExtension.php
│ ├── EventListener
│ └── ControllerListener.php
│ ├── Form
│ └── ContactType.php
│ ├── Resources
│ ├── config
│ │ └── services.xml
│ ├── public
│ │ ├── css
│ │ │ └── demo.css
│ │ └── images
│ │ │ ├── blue-arrow.png
│ │ │ ├── field-background.gif
│ │ │ ├── logo.gif
│ │ │ ├── search.png
│ │ │ ├── welcome-configure.gif
│ │ │ ├── welcome-demo.gif
│ │ │ └── welcome-quick-tour.gif
│ └── views
│ │ ├── Demo
│ │ ├── contact.html.twig
│ │ ├── hello.html.twig
│ │ └── index.html.twig
│ │ ├── Secured
│ │ ├── hello.html.twig
│ │ ├── helloadmin.html.twig
│ │ ├── layout.html.twig
│ │ └── login.html.twig
│ │ ├── Welcome
│ │ └── index.html.twig
│ │ └── layout.html.twig
│ ├── Tests
│ └── Controller
│ │ └── DemoControllerTest.php
│ └── Twig
│ └── Extension
│ └── DemoExtension.php
└── web
├── .htaccess
├── app.php
├── app_dev.php
├── apple-touch-icon.png
├── config.php
├── favicon.ico
└── robots.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | web/bundles/
2 | app/bootstrap.php.cache
3 | app/cache/*
4 | app/logs/*
5 | build/
6 | vendor
7 | bin
8 | composer.phar
9 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2004-2012 Fabien Potencier
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is furnished
8 | to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Symfony Standard Edition
2 | ========================
3 |
4 | Welcome to the Symfony Standard Edition - a fully-functional Symfony2
5 | application that you can use as the skeleton for your new applications.
6 |
7 | This document contains information on how to download, install, and start
8 | using Symfony. For a more detailed explanation, see the [Installation][1]
9 | chapter of the Symfony Documentation.
10 |
11 | 1) Installing the Standard Edition
12 | ----------------------------------
13 |
14 | When it comes to installing the Symfony Standard Edition, you have the
15 | following options.
16 |
17 | ### Use Composer (*recommended*)
18 |
19 | As Symfony uses [Composer][2] to manage its dependencies, the recommended way
20 | to create a new project is to use it.
21 |
22 | If you don't have Composer yet, download it following the instructions on
23 | http://getcomposer.org/ or just run the following command:
24 |
25 | curl -s http://getcomposer.org/installer | php
26 |
27 | Then, use the `create-project` command to generate a new Symfony application:
28 |
29 | php composer.phar create-project symfony/framework-standard-edition path/to/install
30 |
31 | Composer will install Symfony and all its dependencies under the
32 | `path/to/install` directory.
33 |
34 | ### Download an Archive File
35 |
36 | To quickly test Symfony, you can also download an [archive][3] of the Standard
37 | Edition and unpack it somewhere under your web server root directory.
38 |
39 | If you downloaded an archive "without vendors", you also need to install all
40 | the necessary dependencies. Download composer (see above) and run the
41 | following command:
42 |
43 | php composer.phar install
44 |
45 | 2) Checking your System Configuration
46 | -------------------------------------
47 |
48 | Before starting coding, make sure that your local system is properly
49 | configured for Symfony.
50 |
51 | Execute the `check.php` script from the command line:
52 |
53 | php app/check.php
54 |
55 | Access the `config.php` script from a browser:
56 |
57 | http://localhost/path/to/symfony/app/web/config.php
58 |
59 | If you get any warnings or recommendations, fix them before moving on.
60 |
61 | 3) Browsing the Demo Application
62 | --------------------------------
63 |
64 | Congratulations! You're now ready to use Symfony.
65 |
66 | From the `config.php` page, click the "Bypass configuration and go to the
67 | Welcome page" link to load up your first Symfony page.
68 |
69 | You can also use a web-based configurator by clicking on the "Configure your
70 | Symfony Application online" link of the `config.php` page.
71 |
72 | To see a real-live Symfony page in action, access the following page:
73 |
74 | web/app_dev.php/demo/hello/Fabien
75 |
76 | 4) Getting started with Symfony
77 | -------------------------------
78 |
79 | This distribution is meant to be the starting point for your Symfony
80 | applications, but it also contains some sample code that you can learn from
81 | and play with.
82 |
83 | A great way to start learning Symfony is via the [Quick Tour][4], which will
84 | take you through all the basic features of Symfony2.
85 |
86 | Once you're feeling good, you can move onto reading the official
87 | [Symfony2 book][5].
88 |
89 | A default bundle, `AcmeDemoBundle`, shows you Symfony2 in action. After
90 | playing with it, you can remove it by following these steps:
91 |
92 | * delete the `src/Acme` directory;
93 |
94 | * remove the routing entries referencing AcmeBundle in
95 | `app/config/routing_dev.yml`;
96 |
97 | * remove the AcmeBundle from the registered bundles in `app/AppKernel.php`;
98 |
99 | * remove the `web/bundles/acmedemo` directory;
100 |
101 | * remove the `security.providers`, `security.firewalls.login` and
102 | `security.firewalls.secured_area` entries in the `security.yml` file or
103 | tweak the security configuration to fit your needs.
104 |
105 | What's inside?
106 | ---------------
107 |
108 | The Symfony Standard Edition is configured with the following defaults:
109 |
110 | * Twig is the only configured template engine;
111 |
112 | * Doctrine ORM/DBAL is configured;
113 |
114 | * Swiftmailer is configured;
115 |
116 | * Annotations for everything are enabled.
117 |
118 | It comes pre-configured with the following bundles:
119 |
120 | * **FrameworkBundle** - The core Symfony framework bundle
121 |
122 | * [**SensioFrameworkExtraBundle**][6] - Adds several enhancements, including
123 | template and routing annotation capability
124 |
125 | * [**DoctrineBundle**][7] - Adds support for the Doctrine ORM
126 |
127 | * [**TwigBundle**][8] - Adds support for the Twig templating engine
128 |
129 | * [**SecurityBundle**][9] - Adds security by integrating Symfony's security
130 | component
131 |
132 | * [**SwiftmailerBundle**][10] - Adds support for Swiftmailer, a library for
133 | sending emails
134 |
135 | * [**MonologBundle**][11] - Adds support for Monolog, a logging library
136 |
137 | * [**AsseticBundle**][12] - Adds support for Assetic, an asset processing
138 | library
139 |
140 | * [**JMSSecurityExtraBundle**][13] - Allows security to be added via
141 | annotations
142 |
143 | * [**JMSDiExtraBundle**][14] - Adds more powerful dependency injection
144 | features
145 |
146 | * **WebProfilerBundle** (in dev/test env) - Adds profiling functionality and
147 | the web debug toolbar
148 |
149 | * **SensioDistributionBundle** (in dev/test env) - Adds functionality for
150 | configuring and working with Symfony distributions
151 |
152 | * [**SensioGeneratorBundle**][15] (in dev/test env) - Adds code generation
153 | capabilities
154 |
155 | * **AcmeDemoBundle** (in dev/test env) - A demo bundle with some example
156 | code
157 |
158 | Enjoy!
159 |
160 | [1]: http://symfony.com/doc/2.1/book/installation.html
161 | [2]: http://getcomposer.org/
162 | [3]: http://symfony.com/download
163 | [4]: http://symfony.com/doc/2.1/quick_tour/the_big_picture.html
164 | [5]: http://symfony.com/doc/2.1/index.html
165 | [6]: http://symfony.com/doc/2.1/bundles/SensioFrameworkExtraBundle/index.html
166 | [7]: http://symfony.com/doc/2.1/book/doctrine.html
167 | [8]: http://symfony.com/doc/2.1/book/templating.html
168 | [9]: http://symfony.com/doc/2.1/book/security.html
169 | [10]: http://symfony.com/doc/2.1/cookbook/email.html
170 | [11]: http://symfony.com/doc/2.1/cookbook/logging/monolog.html
171 | [12]: http://symfony.com/doc/2.1/cookbook/assetic/asset_management.html
172 | [13]: http://jmsyst.com/bundles/JMSSecurityExtraBundle/master
173 | [14]: http://jmsyst.com/bundles/JMSDiExtraBundle/master
174 | [15]: http://symfony.com/doc/2.1/bundles/SensioGeneratorBundle/index.html
175 |
--------------------------------------------------------------------------------
/UPGRADE-2.2.md:
--------------------------------------------------------------------------------
1 | UPGRADE FROM 2.1 to 2.2
2 | =======================
3 |
4 | Functional Tests
5 | ----------------
6 |
7 | * The profiler has been disabled by default in the test environment. You can
8 | enable it again by modifying the ``config_test.yml`` configuration file or
9 | even better, you can just enable it for the very next request by calling
10 | ``$client->enableProfiler()`` when you need the profiler in a test (that
11 | speeds up functional tests quite a bit).
12 |
--------------------------------------------------------------------------------
/UPGRADE.md:
--------------------------------------------------------------------------------
1 | Symfony Standard Edition Upgrade
2 | ================================
3 |
4 | From Symfony 2.0 to Symfony 2.1
5 | -------------------------------
6 |
7 | ### Project Dependencies
8 |
9 | As of Symfony 2.1, project dependencies are managed by
10 | [Composer](http://getcomposer.org/):
11 |
12 | * The `bin/vendors` script can be removed as `composer.phar` does all the work
13 | now (it is recommended to install it globally on your machine).
14 |
15 | * The `deps` file need to be replaced with the `composer.json` one.
16 |
17 | * The `composer.lock` is the equivalent of the generated `deps.lock` file and
18 | it is automatically generated by Composer.
19 |
20 | Download the default
21 | [`composer.json`](https://raw.github.com/symfony/symfony-standard/master/composer.json)
22 | and
23 | [`composer.lock`](https://raw.github.com/symfony/symfony-standard/master/composer.lock)
24 | files for Symfony 2.1 and put them into the main directory of your project. If
25 | you have customized your `deps` file, move the added dependencies to the
26 | `composer.json` file (many bundles and PHP libraries are already available as
27 | Composer packages -- search for them on [Packagist](http://packagist.org/)).
28 |
29 | Remove your current `vendor` directory.
30 |
31 | Finally, run Composer:
32 |
33 | $ composer.phar install
34 |
35 | ### `app/autoload.php`
36 |
37 | The default `autoload.php` reads as follows (it has been simplified a lot as
38 | autoloading for libraries and bundles declared in your `composer.json` file is
39 | automatically managed by the Composer autoloader):
40 |
41 | add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs');
52 | }
53 |
54 | AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
55 |
56 | return $loader;
57 |
58 | ### `app/config/config.yml`
59 |
60 | The `framework.charset` setting must be removed. If you are not using `UTF-8`
61 | for your application, override the `getCharset()` method in your `AppKernel`
62 | class instead:
63 |
64 | class AppKernel extends Kernel
65 | {
66 | public function getCharset()
67 | {
68 | return 'ISO-8859-1';
69 | }
70 |
71 | // ...
72 | }
73 |
74 | You might want to add the new `strict_requirements` parameter to
75 | `framework.router` (it avoids fatal errors in the production environment when
76 | a link cannot be generated):
77 |
78 | framework:
79 | router:
80 | strict_requirements: %kernel.debug%
81 |
82 | You can even disable the requirements check on production with `null` as you should
83 | know that the parameters for URL generation always pass the requirements, e.g. by
84 | validating them beforehand. This additionally enhances performance. See
85 | [config_prod.yml](https://github.com/symfony/symfony-standard/blob/master/app/config/config_prod.yml).
86 |
87 | The `default_locale` parameter is now a setting of the main `framework`
88 | configuration (it was under the `framework.session` in 2.0):
89 |
90 | framework:
91 | default_locale: %locale%
92 |
93 | The `auto_start` setting under `framework.session` must be removed as it is
94 | not used anymore (the session is now always started on-demand). If
95 | `auto_start` was the only setting under the `framework.session` entry, don't
96 | remove it entirely, but set its value to `~` (`~` means `null` in YAML)
97 | instead:
98 |
99 | framework:
100 | session: ~
101 |
102 | The `trust_proxy_headers` setting was added in the default configuration file
103 | (as it should be set to `true` when you install your application behind a
104 | reverse proxy):
105 |
106 | framework:
107 | trust_proxy_headers: false
108 |
109 | An empty `bundles` entry was added to the `assetic` configuration:
110 |
111 | assetic:
112 | bundles: []
113 |
114 | The default `swiftmailer` configuration now has the `spool` setting configured
115 | to the `memory` type to defer email sending after the response is sent to the
116 | user (recommended for better end-user performance):
117 |
118 | swiftmailer:
119 | spool: { type: memory }
120 |
121 | The `jms_security_extra` configuration was moved to the `security.yml`
122 | configuration file.
123 |
124 | ### `app/config/config_dev.yml`
125 |
126 | An example of how to send all emails to a unique address was added:
127 |
128 | #swiftmailer:
129 | # delivery_address: me@example.com
130 |
131 | ### `app/config/config_test.yml`
132 |
133 | The `storage_id` setting must be changed to `session.storage.mock_file`:
134 |
135 | framework:
136 | session:
137 | storage_id: session.storage.mock_file
138 |
139 | ### `app/config/parameters.ini`
140 |
141 | The file has been converted to a YAML file which reads as follows:
142 |
143 | parameters:
144 | database_driver: pdo_mysql
145 | database_host: localhost
146 | database_port: ~
147 | database_name: symfony
148 | database_user: root
149 | database_password: ~
150 |
151 | mailer_transport: smtp
152 | mailer_host: localhost
153 | mailer_user: ~
154 | mailer_password: ~
155 |
156 | locale: en
157 | secret: ThisTokenIsNotSoSecretChangeIt
158 |
159 | Note that if you convert your parameters file to YAML, you must also change
160 | its reference in `app/config/config.yml`.
161 |
162 | ### `app/config/routing_dev.yml`
163 |
164 | The `_assetic` entry was removed:
165 |
166 | #_assetic:
167 | # resource: .
168 | # type: assetic
169 |
170 | ### `app/config/security.yml`
171 |
172 | Under `security.access_control`, the default rule for internal routes was changed:
173 |
174 | security:
175 | access_control:
176 | #- { path: ^/_internal/secure, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
177 |
178 | Under `security.providers`, the `in_memory` example was updated to the following:
179 |
180 | security:
181 | providers:
182 | in_memory:
183 | memory:
184 | users:
185 | user: { password: userpass, roles: [ 'ROLE_USER' ] }
186 | admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
187 |
188 | ### `app/AppKernel.php`
189 |
190 | The following bundles have been added to the list of default registered bundles:
191 |
192 | new JMS\AopBundle\JMSAopBundle(),
193 | new JMS\DiExtraBundle\JMSDiExtraBundle($this),
194 |
195 | ### `web/app.php`
196 |
197 | The default `web/app.php` file now reads as follows:
198 |
199 | register(true);
212 | */
213 |
214 | require_once __DIR__.'/../app/AppKernel.php';
215 | //require_once __DIR__.'/../app/AppCache.php';
216 |
217 | $kernel = new AppKernel('prod', false);
218 | $kernel->loadClassCache();
219 | //$kernel = new AppCache($kernel);
220 | $request = Request::createFromGlobals();
221 | $response = $kernel->handle($request);
222 | $response->send();
223 | $kernel->terminate($request, $response);
224 |
225 | ### `web/app_dev.php`
226 |
227 | The default `web/app_dev.php` file now reads as follows:
228 |
229 | loadClassCache();
255 | $request = Request::createFromGlobals();
256 | $response = $kernel->handle($request);
257 | $response->send();
258 | $kernel->terminate($request, $response);
259 |
--------------------------------------------------------------------------------
/app/.htaccess:
--------------------------------------------------------------------------------
1 | deny from all
--------------------------------------------------------------------------------
/app/AppCache.php:
--------------------------------------------------------------------------------
1 | getEnvironment(), array('dev', 'test'))) {
25 | $bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
26 | $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
27 | $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
28 | $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
29 | }
30 |
31 | return $bundles;
32 | }
33 |
34 | public function registerContainerConfiguration(LoaderInterface $loader)
35 | {
36 | $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/Resources/views/base.html.twig:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {% block title %}Welcome!{% endblock %}
6 | {% block stylesheets %}{% endblock %}
7 |
8 |
9 |
10 | {% block body %}{% endblock %}
11 | {% block javascripts %}{% endblock %}
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/SymfonyRequirements.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | /*
13 | * Users of PHP 5.2 should be able to run the requirements checks.
14 | * This is why the file and all classes must be compatible with PHP 5.2+
15 | * (e.g. not using namespaces and closures).
16 | *
17 | * ************** CAUTION **************
18 | *
19 | * DO NOT EDIT THIS FILE as it will be overriden by Composer as part of
20 | * the installation/update process. The original file resides in the
21 | * SensioDistributionBundle.
22 | *
23 | * ************** CAUTION **************
24 | */
25 |
26 | /**
27 | * Represents a single PHP requirement, e.g. an installed extension.
28 | * It can be a mandatory requirement or an optional recommendation.
29 | * There is a special subclass, named PhpIniRequirement, to check a php.ini configuration.
30 | *
31 | * @author Tobias Schultze
32 | */
33 | class Requirement
34 | {
35 | private $fulfilled;
36 | private $testMessage;
37 | private $helpText;
38 | private $helpHtml;
39 | private $optional;
40 |
41 | /**
42 | * Constructor that initializes the requirement.
43 | *
44 | * @param Boolean $fulfilled Whether the requirement is fulfilled
45 | * @param string $testMessage The message for testing the requirement
46 | * @param string $helpHtml The help text formatted in HTML for resolving the problem
47 | * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
48 | * @param Boolean $optional Whether this is only an optional recommendation not a mandatory requirement
49 | */
50 | public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false)
51 | {
52 | $this->fulfilled = (Boolean) $fulfilled;
53 | $this->testMessage = (string) $testMessage;
54 | $this->helpHtml = (string) $helpHtml;
55 | $this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText;
56 | $this->optional = (Boolean) $optional;
57 | }
58 |
59 | /**
60 | * Returns whether the requirement is fulfilled.
61 | *
62 | * @return Boolean true if fulfilled, otherwise false
63 | */
64 | public function isFulfilled()
65 | {
66 | return $this->fulfilled;
67 | }
68 |
69 | /**
70 | * Returns the message for testing the requirement.
71 | *
72 | * @return string The test message
73 | */
74 | public function getTestMessage()
75 | {
76 | return $this->testMessage;
77 | }
78 |
79 | /**
80 | * Returns the help text for resolving the problem
81 | *
82 | * @return string The help text
83 | */
84 | public function getHelpText()
85 | {
86 | return $this->helpText;
87 | }
88 |
89 | /**
90 | * Returns the help text formatted in HTML.
91 | *
92 | * @return string The HTML help
93 | */
94 | public function getHelpHtml()
95 | {
96 | return $this->helpHtml;
97 | }
98 |
99 | /**
100 | * Returns whether this is only an optional recommendation and not a mandatory requirement.
101 | *
102 | * @return Boolean true if optional, false if mandatory
103 | */
104 | public function isOptional()
105 | {
106 | return $this->optional;
107 | }
108 | }
109 |
110 | /**
111 | * Represents a PHP requirement in form of a php.ini configuration.
112 | *
113 | * @author Tobias Schultze
114 | */
115 | class PhpIniRequirement extends Requirement
116 | {
117 | /**
118 | * Constructor that initializes the requirement.
119 | *
120 | * @param string $cfgName The configuration name used for ini_get()
121 | * @param Boolean|callback $evaluation Either a Boolean indicating whether the configuration should evaluate to true or false,
122 | or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
123 | * @param Boolean $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
124 | This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
125 | Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
126 | * @param string|null $testMessage The message for testing the requirement (when null and $evaluation is a Boolean a default message is derived)
127 | * @param string|null $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a Boolean a default help is derived)
128 | * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
129 | * @param Boolean $optional Whether this is only an optional recommendation not a mandatory requirement
130 | */
131 | public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false)
132 | {
133 | $cfgValue = ini_get($cfgName);
134 |
135 | if (is_callable($evaluation)) {
136 | if (null === $testMessage || null === $helpHtml) {
137 | throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.');
138 | }
139 |
140 | $fulfilled = call_user_func($evaluation, $cfgValue);
141 | } else {
142 | if (null === $testMessage) {
143 | $testMessage = sprintf('%s %s be %s in php.ini',
144 | $cfgName,
145 | $optional ? 'should' : 'must',
146 | $evaluation ? 'enabled' : 'disabled'
147 | );
148 | }
149 |
150 | if (null === $helpHtml) {
151 | $helpHtml = sprintf('Set %s to %s in php.ini* .',
152 | $cfgName,
153 | $evaluation ? 'on' : 'off'
154 | );
155 | }
156 |
157 | $fulfilled = $evaluation == $cfgValue;
158 | }
159 |
160 | parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional);
161 | }
162 | }
163 |
164 | /**
165 | * A RequirementCollection represents a set of Requirement instances.
166 | *
167 | * @author Tobias Schultze
168 | */
169 | class RequirementCollection implements IteratorAggregate
170 | {
171 | private $requirements = array();
172 |
173 | /**
174 | * Gets the current RequirementCollection as an Iterator.
175 | *
176 | * @return Traversable A Traversable interface
177 | */
178 | public function getIterator()
179 | {
180 | return new ArrayIterator($this->requirements);
181 | }
182 |
183 | /**
184 | * Adds a Requirement.
185 | *
186 | * @param Requirement $requirement A Requirement instance
187 | */
188 | public function add(Requirement $requirement)
189 | {
190 | $this->requirements[] = $requirement;
191 | }
192 |
193 | /**
194 | * Adds a mandatory requirement.
195 | *
196 | * @param Boolean $fulfilled Whether the requirement is fulfilled
197 | * @param string $testMessage The message for testing the requirement
198 | * @param string $helpHtml The help text formatted in HTML for resolving the problem
199 | * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
200 | */
201 | public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null)
202 | {
203 | $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false));
204 | }
205 |
206 | /**
207 | * Adds an optional recommendation.
208 | *
209 | * @param Boolean $fulfilled Whether the recommendation is fulfilled
210 | * @param string $testMessage The message for testing the recommendation
211 | * @param string $helpHtml The help text formatted in HTML for resolving the problem
212 | * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
213 | */
214 | public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null)
215 | {
216 | $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true));
217 | }
218 |
219 | /**
220 | * Adds a mandatory requirement in form of a php.ini configuration.
221 | *
222 | * @param string $cfgName The configuration name used for ini_get()
223 | * @param Boolean|callback $evaluation Either a Boolean indicating whether the configuration should evaluate to true or false,
224 | or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
225 | * @param Boolean $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
226 | This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
227 | Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
228 | * @param string $testMessage The message for testing the requirement (when null and $evaluation is a Boolean a default message is derived)
229 | * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a Boolean a default help is derived)
230 | * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
231 | */
232 | public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
233 | {
234 | $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false));
235 | }
236 |
237 | /**
238 | * Adds an optional recommendation in form of a php.ini configuration.
239 | *
240 | * @param string $cfgName The configuration name used for ini_get()
241 | * @param Boolean|callback $evaluation Either a Boolean indicating whether the configuration should evaluate to true or false,
242 | or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
243 | * @param Boolean $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
244 | This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
245 | Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
246 | * @param string $testMessage The message for testing the requirement (when null and $evaluation is a Boolean a default message is derived)
247 | * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a Boolean a default help is derived)
248 | * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
249 | */
250 | public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
251 | {
252 | $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true));
253 | }
254 |
255 | /**
256 | * Adds a requirement collection to the current set of requirements.
257 | *
258 | * @param RequirementCollection $collection A RequirementCollection instance
259 | */
260 | public function addCollection(RequirementCollection $collection)
261 | {
262 | $this->requirements = array_merge($this->requirements, $collection->all());
263 | }
264 |
265 | /**
266 | * Returns both requirements and recommendations.
267 | *
268 | * @return array Array of Requirement instances
269 | */
270 | public function all()
271 | {
272 | return $this->requirements;
273 | }
274 |
275 | /**
276 | * Returns all mandatory requirements.
277 | *
278 | * @return array Array of Requirement instances
279 | */
280 | public function getRequirements()
281 | {
282 | $array = array();
283 | foreach ($this->requirements as $req) {
284 | if (!$req->isOptional()) {
285 | $array[] = $req;
286 | }
287 | }
288 |
289 | return $array;
290 | }
291 |
292 | /**
293 | * Returns the mandatory requirements that were not met.
294 | *
295 | * @return array Array of Requirement instances
296 | */
297 | public function getFailedRequirements()
298 | {
299 | $array = array();
300 | foreach ($this->requirements as $req) {
301 | if (!$req->isFulfilled() && !$req->isOptional()) {
302 | $array[] = $req;
303 | }
304 | }
305 |
306 | return $array;
307 | }
308 |
309 | /**
310 | * Returns all optional recommmendations.
311 | *
312 | * @return array Array of Requirement instances
313 | */
314 | public function getRecommendations()
315 | {
316 | $array = array();
317 | foreach ($this->requirements as $req) {
318 | if ($req->isOptional()) {
319 | $array[] = $req;
320 | }
321 | }
322 |
323 | return $array;
324 | }
325 |
326 | /**
327 | * Returns the recommendations that were not met.
328 | *
329 | * @return array Array of Requirement instances
330 | */
331 | public function getFailedRecommendations()
332 | {
333 | $array = array();
334 | foreach ($this->requirements as $req) {
335 | if (!$req->isFulfilled() && $req->isOptional()) {
336 | $array[] = $req;
337 | }
338 | }
339 |
340 | return $array;
341 | }
342 |
343 | /**
344 | * Returns whether a php.ini configuration is not correct.
345 | *
346 | * @return Boolean php.ini configuration problem?
347 | */
348 | public function hasPhpIniConfigIssue()
349 | {
350 | foreach ($this->requirements as $req) {
351 | if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) {
352 | return true;
353 | }
354 | }
355 |
356 | return false;
357 | }
358 |
359 | /**
360 | * Returns the PHP configuration file (php.ini) path.
361 | *
362 | * @return string|false php.ini file path
363 | */
364 | public function getPhpIniConfigPath()
365 | {
366 | return get_cfg_var('cfg_file_path');
367 | }
368 | }
369 |
370 | /**
371 | * This class specifies all requirements and optional recommendations that
372 | * are necessary to run the Symfony Standard Edition.
373 | *
374 | * @author Tobias Schultze
375 | * @author Fabien Potencier
376 | */
377 | class SymfonyRequirements extends RequirementCollection
378 | {
379 | const REQUIRED_PHP_VERSION = '5.3.3';
380 |
381 | /**
382 | * Constructor that initializes the requirements.
383 | */
384 | public function __construct()
385 | {
386 | /* mandatory requirements follow */
387 |
388 | $installedPhpVersion = phpversion();
389 |
390 | $this->addRequirement(
391 | version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='),
392 | sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion),
393 | sprintf('You are running PHP version "%s ", but Symfony needs at least PHP "%s " to run.
394 | Before using Symfony, upgrade your PHP installation, preferably to the latest version.',
395 | $installedPhpVersion, self::REQUIRED_PHP_VERSION),
396 | sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion)
397 | );
398 |
399 | $this->addRequirement(
400 | version_compare($installedPhpVersion, '5.3.16', '!='),
401 | 'PHP version must not be 5.3.16 as Symfony won\'t work properly with it',
402 | 'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)'
403 | );
404 |
405 | $this->addRequirement(
406 | is_dir(__DIR__.'/../vendor/composer'),
407 | 'Vendor libraries must be installed',
408 | 'Vendor libraries are missing. Install composer following instructions from http://getcomposer.org/ . ' .
409 | 'Then run "php composer.phar install " to install them.'
410 | );
411 |
412 | $baseDir = basename(__DIR__);
413 |
414 | $this->addRequirement(
415 | is_writable(__DIR__.'/cache'),
416 | "$baseDir/cache/ directory must be writable",
417 | "Change the permissions of the \"$baseDir/cache/ \" directory so that the web server can write into it."
418 | );
419 |
420 | $this->addRequirement(
421 | is_writable(__DIR__.'/logs'),
422 | "$baseDir/logs/ directory must be writable",
423 | "Change the permissions of the \"$baseDir/logs/ \" directory so that the web server can write into it."
424 | );
425 |
426 | $this->addPhpIniRequirement(
427 | 'date.timezone', true, false,
428 | 'date.timezone setting must be set',
429 | 'Set the "date.timezone " setting in php.ini* (like Europe/Paris).'
430 | );
431 |
432 | if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) {
433 | $this->addRequirement(
434 | (in_array(date_default_timezone_get(), DateTimeZone::listIdentifiers())),
435 | sprintf('Configured default timezone "%s" must be supported by your installation of PHP', date_default_timezone_get()),
436 | 'Your default timezone is not supported by PHP. Check for typos in your php.ini file and have a look at the list of deprecated timezones at http://php.net/manual/en/timezones.others.php .'
437 | );
438 | }
439 |
440 | $this->addRequirement(
441 | function_exists('json_encode'),
442 | 'json_encode() must be available',
443 | 'Install and enable the JSON extension.'
444 | );
445 |
446 | $this->addRequirement(
447 | function_exists('session_start'),
448 | 'session_start() must be available',
449 | 'Install and enable the session extension.'
450 | );
451 |
452 | $this->addRequirement(
453 | function_exists('ctype_alpha'),
454 | 'ctype_alpha() must be available',
455 | 'Install and enable the ctype extension.'
456 | );
457 |
458 | $this->addRequirement(
459 | function_exists('token_get_all'),
460 | 'token_get_all() must be available',
461 | 'Install and enable the Tokenizer extension.'
462 | );
463 |
464 | $this->addRequirement(
465 | function_exists('simplexml_import_dom'),
466 | 'simplexml_import_dom() must be available',
467 | 'Install and enable the SimpleXML extension.'
468 | );
469 |
470 | if (function_exists('apc_store') && ini_get('apc.enabled')) {
471 | $this->addRequirement(
472 | version_compare(phpversion('apc'), '3.0.17', '>='),
473 | 'APC version must be at least 3.0.17',
474 | 'Upgrade your APC extension (3.0.17+).'
475 | );
476 | }
477 |
478 | $this->addPhpIniRequirement('detect_unicode', false);
479 |
480 | if (extension_loaded('suhosin')) {
481 | $this->addPhpIniRequirement(
482 | 'suhosin.executor.include.whitelist',
483 | create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'),
484 | false,
485 | 'suhosin.executor.include.whitelist must be configured correctly in php.ini',
486 | 'Add "phar " to suhosin.executor.include.whitelist in php.ini* .'
487 | );
488 | }
489 |
490 | if (extension_loaded('xdebug')) {
491 | $this->addPhpIniRequirement(
492 | 'xdebug.show_exception_trace', false, true
493 | );
494 |
495 | $this->addPhpIniRequirement(
496 | 'xdebug.scream', false, true
497 | );
498 | }
499 |
500 | $pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null;
501 |
502 | $this->addRequirement(
503 | null !== $pcreVersion && $pcreVersion > 8.0,
504 | sprintf('PCRE extension must be available and at least 8.0 (%s installed)', $pcreVersion ? $pcreVersion : 'not'),
505 | 'Upgrade your PCRE extension (8.0+).'
506 | );
507 |
508 | /* optional recommendations follow */
509 |
510 | $this->addRecommendation(
511 | file_get_contents(__FILE__) === file_get_contents(__DIR__.'/../vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/skeleton/app/SymfonyRequirements.php'),
512 | 'Requirements file should be up-to-date',
513 | 'Your requirements file is outdated. Run composer install and re-check your configuration.'
514 | );
515 |
516 | $this->addRecommendation(
517 | version_compare($installedPhpVersion, '5.3.4', '>='),
518 | 'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions',
519 | 'Your project might malfunction randomly due to PHP bug #52083 ("Notice: Trying to get property of non-object"). Install PHP 5.3.4 or newer.'
520 | );
521 |
522 | $this->addRecommendation(
523 | version_compare($installedPhpVersion, '5.3.8', '>='),
524 | 'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156',
525 | 'Install PHP 5.3.8 or newer if your project uses annotations.'
526 | );
527 |
528 | $this->addRecommendation(
529 | version_compare($installedPhpVersion, '5.4.0', '!='),
530 | 'You should not use PHP 5.4.0 due to the PHP bug #61453',
531 | 'Your project might not work properly due to the PHP bug #61453 ("Cannot dump definitions which have method calls"). Install PHP 5.4.1 or newer.'
532 | );
533 |
534 | $this->addRecommendation(
535 | class_exists('DomDocument'),
536 | 'PHP-XML module should be installed',
537 | 'Install and enable the PHP-XML module.'
538 | );
539 |
540 | $this->addRecommendation(
541 | function_exists('mb_strlen'),
542 | 'mb_strlen() should be available',
543 | 'Install and enable the mbstring extension.'
544 | );
545 |
546 | $this->addRecommendation(
547 | function_exists('iconv'),
548 | 'iconv() should be available',
549 | 'Install and enable the iconv extension.'
550 | );
551 |
552 | $this->addRecommendation(
553 | function_exists('utf8_decode'),
554 | 'utf8_decode() should be available',
555 | 'Install and enable the XML extension.'
556 | );
557 |
558 | if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
559 | $this->addRecommendation(
560 | function_exists('posix_isatty'),
561 | 'posix_isatty() should be available',
562 | 'Install and enable the php_posix extension (used to colorize the CLI output).'
563 | );
564 | }
565 |
566 | $this->addRecommendation(
567 | class_exists('Locale'),
568 | 'intl extension should be available',
569 | 'Install and enable the intl extension (used for validators).'
570 | );
571 |
572 | if (class_exists('Collator')) {
573 | $this->addRecommendation(
574 | null !== new Collator('fr_FR'),
575 | 'intl extension should be correctly configured',
576 | 'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.'
577 | );
578 | }
579 |
580 | if (class_exists('Locale')) {
581 | if (defined('INTL_ICU_VERSION')) {
582 | $version = INTL_ICU_VERSION;
583 | } else {
584 | $reflector = new ReflectionExtension('intl');
585 |
586 | ob_start();
587 | $reflector->info();
588 | $output = strip_tags(ob_get_clean());
589 |
590 | preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches);
591 | $version = $matches[1];
592 | }
593 |
594 | $this->addRecommendation(
595 | version_compare($version, '4.0', '>='),
596 | 'intl ICU version should be at least 4+',
597 | 'Upgrade your intl extension with a newer ICU version (4+).'
598 | );
599 | }
600 |
601 | $accelerator =
602 | (function_exists('apc_store') && ini_get('apc.enabled'))
603 | ||
604 | function_exists('eaccelerator_put') && ini_get('eaccelerator.enable')
605 | ||
606 | function_exists('xcache_set')
607 | ;
608 |
609 | $this->addRecommendation(
610 | $accelerator,
611 | 'a PHP accelerator should be installed',
612 | 'Install and enable a PHP accelerator like APC (highly recommended).'
613 | );
614 |
615 | $this->addPhpIniRecommendation('short_open_tag', false);
616 |
617 | $this->addPhpIniRecommendation('magic_quotes_gpc', false, true);
618 |
619 | $this->addPhpIniRecommendation('register_globals', false, true);
620 |
621 | $this->addPhpIniRecommendation('session.auto_start', false);
622 |
623 | $this->addRecommendation(
624 | class_exists('PDO'),
625 | 'PDO should be installed',
626 | 'Install PDO (mandatory for Doctrine).'
627 | );
628 |
629 | if (class_exists('PDO')) {
630 | $drivers = PDO::getAvailableDrivers();
631 | $this->addRecommendation(
632 | count($drivers),
633 | sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'),
634 | 'Install PDO drivers (mandatory for Doctrine).'
635 | );
636 | }
637 | }
638 | }
639 |
--------------------------------------------------------------------------------
/app/autoload.php:
--------------------------------------------------------------------------------
1 | getPhpIniConfigPath();
8 |
9 | echo "********************************\n";
10 | echo "* *\n";
11 | echo "* Symfony requirements check *\n";
12 | echo "* *\n";
13 | echo "********************************\n\n";
14 |
15 | echo $iniPath ? sprintf("* Configuration file used by PHP: %s\n\n", $iniPath) : "* WARNING: No configuration file (php.ini) used by PHP!\n\n";
16 |
17 | echo "** ATTENTION **\n";
18 | echo "* The PHP CLI can use a different php.ini file\n";
19 | echo "* than the one used with your web server.\n";
20 | if ('\\' == DIRECTORY_SEPARATOR) {
21 | echo "* (especially on the Windows platform)\n";
22 | }
23 | echo "* To be on the safe side, please also launch the requirements check\n";
24 | echo "* from your web server using the web/config.php script.\n";
25 |
26 | echo_title('Mandatory requirements');
27 |
28 | foreach ($symfonyRequirements->getRequirements() as $req) {
29 | echo_requirement($req);
30 | }
31 |
32 | echo_title('Optional recommendations');
33 |
34 | foreach ($symfonyRequirements->getRecommendations() as $req) {
35 | echo_requirement($req);
36 | }
37 |
38 | /**
39 | * Prints a Requirement instance
40 | */
41 | function echo_requirement(Requirement $requirement)
42 | {
43 | $result = $requirement->isFulfilled() ? 'OK' : ($requirement->isOptional() ? 'WARNING' : 'ERROR');
44 | echo ' ' . str_pad($result, 9);
45 | echo $requirement->getTestMessage() . "\n";
46 |
47 | if (!$requirement->isFulfilled()) {
48 | echo sprintf(" %s\n\n", $requirement->getHelpText());
49 | }
50 | }
51 |
52 | function echo_title($title)
53 | {
54 | echo "\n** $title **\n\n";
55 | }
56 |
--------------------------------------------------------------------------------
/app/config/config.yml:
--------------------------------------------------------------------------------
1 | imports:
2 | - { resource: parameters.yml }
3 | - { resource: security.yml }
4 |
5 | framework:
6 | #esi: ~
7 | #translator: { fallback: %locale% }
8 | secret: %secret%
9 | router:
10 | resource: "%kernel.root_dir%/config/routing.yml"
11 | strict_requirements: %kernel.debug%
12 | form: true
13 | csrf_protection: true
14 | validation: { enable_annotations: true }
15 | templating: { engines: ['twig'] } #assets_version: SomeVersionScheme
16 | default_locale: %locale%
17 | trust_proxy_headers: false # Whether or not the Request object should trust proxy headers (X_FORWARDED_FOR/HTTP_CLIENT_IP)
18 | session: ~
19 |
20 | # Twig Configuration
21 | twig:
22 | debug: %kernel.debug%
23 | strict_variables: %kernel.debug%
24 |
25 | # Assetic Configuration
26 | assetic:
27 | debug: %kernel.debug%
28 | use_controller: false
29 | bundles: [ ]
30 | #java: /usr/bin/java
31 | filters:
32 | cssrewrite: ~
33 | #closure:
34 | # jar: %kernel.root_dir%/Resources/java/compiler.jar
35 | #yui_css:
36 | # jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar
37 |
38 | # Doctrine Configuration
39 | doctrine:
40 | dbal:
41 | driver: %database_driver%
42 | host: %database_host%
43 | port: %database_port%
44 | dbname: %database_name%
45 | user: %database_user%
46 | password: %database_password%
47 | charset: UTF8
48 |
49 | orm:
50 | auto_generate_proxy_classes: %kernel.debug%
51 | auto_mapping: true
52 |
53 | # Swiftmailer Configuration
54 | swiftmailer:
55 | transport: %mailer_transport%
56 | host: %mailer_host%
57 | username: %mailer_user%
58 | password: %mailer_password%
59 | spool: { type: memory }
60 |
--------------------------------------------------------------------------------
/app/config/config_dev.yml:
--------------------------------------------------------------------------------
1 | imports:
2 | - { resource: config.yml }
3 |
4 | framework:
5 | router: { resource: "%kernel.root_dir%/config/routing_dev.yml" }
6 | profiler: { only_exceptions: false }
7 |
8 | web_profiler:
9 | toolbar: true
10 | intercept_redirects: false
11 |
12 | monolog:
13 | handlers:
14 | main:
15 | type: stream
16 | path: %kernel.logs_dir%/%kernel.environment%.log
17 | level: debug
18 | firephp:
19 | type: firephp
20 | level: info
21 |
22 | assetic:
23 | use_controller: true
24 |
25 | #swiftmailer:
26 | # delivery_address: me@example.com
27 |
--------------------------------------------------------------------------------
/app/config/config_prod.yml:
--------------------------------------------------------------------------------
1 | imports:
2 | - { resource: config.yml }
3 |
4 | # In production environment you should know that the parameters for URL generation
5 | # always pass the requirements. Otherwise it would break your link (or even site with
6 | # strict_requirements = true). So we can disable the requirements check completely for
7 | # enhanced performance with strict_requirements = null.
8 | framework:
9 | router:
10 | strict_requirements: null
11 |
12 | #doctrine:
13 | # orm:
14 | # metadata_cache_driver: apc
15 | # result_cache_driver: apc
16 | # query_cache_driver: apc
17 |
18 | monolog:
19 | handlers:
20 | main:
21 | type: fingers_crossed
22 | action_level: error
23 | handler: nested
24 | nested:
25 | type: stream
26 | path: %kernel.logs_dir%/%kernel.environment%.log
27 | level: debug
28 |
--------------------------------------------------------------------------------
/app/config/config_test.yml:
--------------------------------------------------------------------------------
1 | imports:
2 | - { resource: config_dev.yml }
3 |
4 | framework:
5 | test: ~
6 | session:
7 | storage_id: session.storage.mock_file
8 | profiler:
9 | enable: false
10 |
11 | web_profiler:
12 | toolbar: false
13 | intercept_redirects: false
14 |
15 | swiftmailer:
16 | disable_delivery: true
17 |
--------------------------------------------------------------------------------
/app/config/parameters.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | database_driver: pdo_mysql
3 | database_host: localhost
4 | database_port: ~
5 | database_name: symfony
6 | database_user: root
7 | database_password: ~
8 |
9 | mailer_transport: smtp
10 | mailer_host: localhost
11 | mailer_user: ~
12 | mailer_password: ~
13 |
14 | locale: en
15 | secret: ThisTokenIsNotSoSecretChangeIt
16 |
--------------------------------------------------------------------------------
/app/config/routing.yml:
--------------------------------------------------------------------------------
1 | # Internal routing configuration to handle ESI
2 | #_internal:
3 | # resource: "@FrameworkBundle/Resources/config/routing/internal.xml"
4 | # prefix: /_internal
5 |
--------------------------------------------------------------------------------
/app/config/routing_dev.yml:
--------------------------------------------------------------------------------
1 | _welcome:
2 | pattern: /
3 | defaults: { _controller: AcmeDemoBundle:Welcome:index }
4 |
5 | _demo_secured:
6 | resource: "@AcmeDemoBundle/Controller/SecuredController.php"
7 | type: annotation
8 |
9 | _demo:
10 | resource: "@AcmeDemoBundle/Controller/DemoController.php"
11 | type: annotation
12 | prefix: /demo
13 |
14 | _wdt:
15 | resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
16 | prefix: /_wdt
17 |
18 | _profiler:
19 | resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
20 | prefix: /_profiler
21 |
22 | _configurator:
23 | resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
24 | prefix: /_configurator
25 |
26 | _main:
27 | resource: routing.yml
28 |
--------------------------------------------------------------------------------
/app/config/security.yml:
--------------------------------------------------------------------------------
1 | jms_security_extra:
2 | secure_all_services: false
3 | expressions: true
4 |
5 | security:
6 | encoders:
7 | Symfony\Component\Security\Core\User\User: plaintext
8 |
9 | role_hierarchy:
10 | ROLE_ADMIN: ROLE_USER
11 | ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
12 |
13 | providers:
14 | in_memory:
15 | memory:
16 | users:
17 | user: { password: userpass, roles: [ 'ROLE_USER' ] }
18 | admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
19 |
20 | firewalls:
21 | dev:
22 | pattern: ^/(_(profiler|wdt)|css|images|js)/
23 | security: false
24 |
25 | login:
26 | pattern: ^/demo/secured/login$
27 | security: false
28 |
29 | secured_area:
30 | pattern: ^/demo/secured/
31 | form_login:
32 | check_path: /demo/secured/login_check
33 | login_path: /demo/secured/login
34 | logout:
35 | path: /demo/secured/logout
36 | target: /demo/
37 | #anonymous: ~
38 | #http_basic:
39 | # realm: "Secured Demo Area"
40 |
41 | access_control:
42 | #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
43 | #- { path: ^/_internal/secure, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
44 |
--------------------------------------------------------------------------------
/app/console:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
18 | $debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';
19 |
20 | $kernel = new AppKernel($env, $debug);
21 | $application = new Application($kernel);
22 | $application->run($input);
23 |
--------------------------------------------------------------------------------
/app/logs/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsmith77/symfony-standard/0ed803cf4ce556156524aaf72a966df881ab9f90/app/logs/.gitkeep
--------------------------------------------------------------------------------
/app/phpunit.xml.dist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
15 |
16 |
17 |
18 | ../src/*/*Bundle/Tests
19 | ../src/*/Bundle/*Bundle/Tests
20 |
21 |
22 |
23 |
28 |
29 |
30 |
31 | ../src
32 |
33 | ../src/*/*Bundle/Resources
34 | ../src/*/*Bundle/Tests
35 | ../src/*/Bundle/*Bundle/Resources
36 | ../src/*/Bundle/*Bundle/Tests
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "symfony/framework-standard-edition",
3 | "description": "The \"Symfony Standard Edition\" distribution",
4 | "autoload": {
5 | "psr-0": { "": "src/" }
6 | },
7 | "require": {
8 | "php": ">=5.3.3",
9 | "symfony/symfony": "2.2.*",
10 | "doctrine/orm": ">=2.2.3,<2.4-dev",
11 | "doctrine/doctrine-bundle": "1.0.*",
12 | "twig/extensions": "1.0.*",
13 | "symfony/assetic-bundle": "2.1.*",
14 | "symfony/swiftmailer-bundle": "2.1.*",
15 | "symfony/monolog-bundle": "2.1.*",
16 | "sensio/distribution-bundle": "2.2.*",
17 | "sensio/framework-extra-bundle": "2.2.*",
18 | "sensio/generator-bundle": "2.2.*",
19 | "jms/security-extra-bundle": "1.3.*",
20 | "jms/di-extra-bundle": "1.2.*"
21 | },
22 | "scripts": {
23 | "post-install-cmd": [
24 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
25 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
26 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
27 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
28 | ],
29 | "post-update-cmd": [
30 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
31 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
32 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
33 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
34 | ]
35 | },
36 | "config": {
37 | "bin-dir": "bin"
38 | },
39 | "minimum-stability": "dev",
40 | "extra": {
41 | "symfony-app-dir": "app",
42 | "symfony-web-dir": "web"
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "hash": "6f0cd88e7a3895f9791ed2e6ab91c1c4",
3 | "packages": [
4 | {
5 | "name": "doctrine/common",
6 | "version": "2.3.x-dev",
7 | "source": {
8 | "type": "git",
9 | "url": "https://github.com/doctrine/common",
10 | "reference": "bb0aebbf234db52df476a2b473d434745b34221c"
11 | },
12 | "dist": {
13 | "type": "zip",
14 | "url": "https://github.com/doctrine/common/zipball/bb0aebbf234db52df476a2b473d434745b34221c",
15 | "reference": "bb0aebbf234db52df476a2b473d434745b34221c",
16 | "shasum": ""
17 | },
18 | "require": {
19 | "php": ">=5.3.2"
20 | },
21 | "time": "1348120518",
22 | "type": "library",
23 | "extra": {
24 | "branch-alias": {
25 | "dev-master": "2.3.x-dev"
26 | }
27 | },
28 | "installation-source": "source",
29 | "autoload": {
30 | "psr-0": {
31 | "Doctrine\\Common": "lib/"
32 | }
33 | },
34 | "license": [
35 | "MIT"
36 | ],
37 | "authors": [
38 | {
39 | "name": "Jonathan Wage",
40 | "email": "jonwage@gmail.com",
41 | "homepage": "http://www.jwage.com/"
42 | },
43 | {
44 | "name": "Guilherme Blanco",
45 | "email": "guilhermeblanco@gmail.com"
46 | },
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": "Johannes Schmitt",
57 | "email": "schmittjoh@gmail.com",
58 | "homepage": "http://jmsyst.com",
59 | "role": "Developer of wrapped JMSSerializerBundle"
60 | }
61 | ],
62 | "description": "Common Library for Doctrine projects",
63 | "homepage": "http://www.doctrine-project.org",
64 | "keywords": [
65 | "collections",
66 | "spl",
67 | "eventmanager",
68 | "annotations",
69 | "persistence"
70 | ]
71 | },
72 | {
73 | "name": "doctrine/dbal",
74 | "version": "2.3.x-dev",
75 | "source": {
76 | "type": "git",
77 | "url": "https://github.com/doctrine/dbal",
78 | "reference": "fdc866a37959e43620e4f7ec519dc7dd8e30fc5b"
79 | },
80 | "dist": {
81 | "type": "zip",
82 | "url": "https://github.com/doctrine/dbal/zipball/fdc866a37959e43620e4f7ec519dc7dd8e30fc5b",
83 | "reference": "fdc866a37959e43620e4f7ec519dc7dd8e30fc5b",
84 | "shasum": ""
85 | },
86 | "require": {
87 | "php": ">=5.3.2",
88 | "doctrine/common": "2.3.*"
89 | },
90 | "time": "1348120597",
91 | "type": "library",
92 | "extra": {
93 | "branch-alias": {
94 | "dev-master": "2.3.x-dev"
95 | }
96 | },
97 | "installation-source": "source",
98 | "autoload": {
99 | "psr-0": {
100 | "Doctrine\\DBAL": "lib/"
101 | }
102 | },
103 | "license": [
104 | "MIT"
105 | ],
106 | "authors": [
107 | {
108 | "name": "Jonathan Wage",
109 | "email": "jonwage@gmail.com",
110 | "homepage": "http://www.jwage.com/"
111 | },
112 | {
113 | "name": "Guilherme Blanco",
114 | "email": "guilhermeblanco@gmail.com"
115 | },
116 | {
117 | "name": "Roman Borschel",
118 | "email": "roman@code-factory.org"
119 | },
120 | {
121 | "name": "Benjamin Eberlei",
122 | "email": "kontakt@beberlei.de"
123 | }
124 | ],
125 | "description": "Database Abstraction Layer",
126 | "homepage": "http://www.doctrine-project.org",
127 | "keywords": [
128 | "database",
129 | "persistence",
130 | "dbal",
131 | "queryobject"
132 | ]
133 | },
134 | {
135 | "name": "doctrine/doctrine-bundle",
136 | "version": "dev-master",
137 | "target-dir": "Doctrine/Bundle/DoctrineBundle",
138 | "source": {
139 | "type": "git",
140 | "url": "git://github.com/doctrine/DoctrineBundle.git",
141 | "reference": "db818ceec46d05fed4f944b957f82a4ab5197e27"
142 | },
143 | "dist": {
144 | "type": "zip",
145 | "url": "https://github.com/doctrine/DoctrineBundle/zipball/db818ceec46d05fed4f944b957f82a4ab5197e27",
146 | "reference": "db818ceec46d05fed4f944b957f82a4ab5197e27",
147 | "shasum": ""
148 | },
149 | "require": {
150 | "php": ">=5.3.2",
151 | "doctrine/dbal": ">=2.2,<2.4-dev",
152 | "symfony/framework-bundle": ">=2.1,<2.3-dev",
153 | "symfony/doctrine-bridge": ">=2.1,<2.3-dev"
154 | },
155 | "require-dev": {
156 | "doctrine/orm": ">=2.2,<2.4-dev",
157 | "symfony/yaml": ">=2.1,<2.3-dev",
158 | "symfony/validator": ">=2.1,<2.3-dev"
159 | },
160 | "suggest": {
161 | "doctrine/orm": "The Doctrine ORM integration is optional in the bundle."
162 | },
163 | "time": "1348828243",
164 | "type": "symfony-bundle",
165 | "extra": {
166 | "branch-alias": {
167 | "dev-master": "1.0.x-dev"
168 | }
169 | },
170 | "installation-source": "source",
171 | "autoload": {
172 | "psr-0": {
173 | "Doctrine\\Bundle\\DoctrineBundle": ""
174 | }
175 | },
176 | "license": [
177 | "MIT"
178 | ],
179 | "authors": [
180 | {
181 | "name": "Fabien Potencier",
182 | "email": "fabien@symfony.com"
183 | },
184 | {
185 | "name": "Symfony Community",
186 | "homepage": "http://symfony.com/contributors"
187 | },
188 | {
189 | "name": "Benjamin Eberlei",
190 | "email": "kontakt@beberlei.de"
191 | }
192 | ],
193 | "description": "Symfony DoctrineBundle",
194 | "homepage": "http://www.doctrine-project.org",
195 | "keywords": [
196 | "database",
197 | "orm",
198 | "persistence",
199 | "dbal"
200 | ]
201 | },
202 | {
203 | "name": "doctrine/orm",
204 | "version": "2.3.x-dev",
205 | "source": {
206 | "type": "git",
207 | "url": "git://github.com/doctrine/doctrine2.git",
208 | "reference": "ea2b28857830720460a345c80c6e7d3f6adae93a"
209 | },
210 | "dist": {
211 | "type": "zip",
212 | "url": "https://github.com/doctrine/doctrine2/zipball/ea2b28857830720460a345c80c6e7d3f6adae93a",
213 | "reference": "ea2b28857830720460a345c80c6e7d3f6adae93a",
214 | "shasum": ""
215 | },
216 | "require": {
217 | "php": ">=5.3.2",
218 | "ext-pdo": "*",
219 | "symfony/console": "2.*",
220 | "doctrine/dbal": "2.3.*"
221 | },
222 | "suggest": {
223 | "symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
224 | },
225 | "time": "1348121015",
226 | "bin": [
227 | "bin/doctrine",
228 | "bin/doctrine.php"
229 | ],
230 | "type": "library",
231 | "extra": {
232 | "branch-alias": {
233 | "dev-master": "2.3.x-dev"
234 | }
235 | },
236 | "installation-source": "source",
237 | "autoload": {
238 | "psr-0": {
239 | "Doctrine\\ORM": "lib/"
240 | }
241 | },
242 | "license": [
243 | "MIT"
244 | ],
245 | "authors": [
246 | {
247 | "name": "Jonathan Wage",
248 | "email": "jonwage@gmail.com",
249 | "homepage": "http://www.jwage.com/"
250 | },
251 | {
252 | "name": "Guilherme Blanco",
253 | "email": "guilhermeblanco@gmail.com"
254 | },
255 | {
256 | "name": "Roman Borschel",
257 | "email": "roman@code-factory.org"
258 | },
259 | {
260 | "name": "Benjamin Eberlei",
261 | "email": "kontakt@beberlei.de"
262 | }
263 | ],
264 | "description": "Object-Relational-Mapper for PHP",
265 | "homepage": "http://www.doctrine-project.org",
266 | "keywords": [
267 | "database",
268 | "orm"
269 | ]
270 | },
271 | {
272 | "name": "jms/aop-bundle",
273 | "version": "dev-master",
274 | "target-dir": "JMS/AopBundle",
275 | "source": {
276 | "type": "git",
277 | "url": "https://github.com/schmittjoh/JMSAopBundle",
278 | "reference": "03d725fde78abea8e1e1ed6af5f1c86c6b9446e1"
279 | },
280 | "dist": {
281 | "type": "zip",
282 | "url": "https://github.com/schmittjoh/JMSAopBundle/zipball/03d725fde78abea8e1e1ed6af5f1c86c6b9446e1",
283 | "reference": "03d725fde78abea8e1e1ed6af5f1c86c6b9446e1",
284 | "shasum": ""
285 | },
286 | "require": {
287 | "symfony/framework-bundle": "2.*",
288 | "jms/cg": "1.0.0"
289 | },
290 | "time": "1348045406",
291 | "type": "symfony-bundle",
292 | "extra": {
293 | "branch-alias": {
294 | "dev-master": "1.1.0-dev"
295 | }
296 | },
297 | "installation-source": "source",
298 | "autoload": {
299 | "psr-0": {
300 | "JMS\\AopBundle": ""
301 | }
302 | },
303 | "license": [
304 | "Apache"
305 | ],
306 | "authors": [
307 | {
308 | "name": "Johannes M. Schmitt",
309 | "email": "schmittjoh@gmail.com",
310 | "homepage": "http://jmsyst.com",
311 | "role": "Developer of wrapped JMSSerializerBundle"
312 | }
313 | ],
314 | "description": "Adds AOP capabilities to Symfony2",
315 | "keywords": [
316 | "annotations",
317 | "aop"
318 | ]
319 | },
320 | {
321 | "name": "jms/cg",
322 | "version": "1.0.0",
323 | "source": {
324 | "type": "git",
325 | "url": "git://github.com/schmittjoh/cg-library.git",
326 | "reference": "1.0.0"
327 | },
328 | "dist": {
329 | "type": "zip",
330 | "url": "https://github.com/schmittjoh/cg-library/zipball/1.0.0",
331 | "reference": "1.0.0",
332 | "shasum": ""
333 | },
334 | "require": {
335 | "php": ">=5.3.0"
336 | },
337 | "time": "2012-01-02 20:40:52",
338 | "type": "library",
339 | "installation-source": "dist",
340 | "autoload": {
341 | "psr-0": {
342 | "CG\\": "src/"
343 | }
344 | },
345 | "license": [
346 | "Apache"
347 | ],
348 | "authors": [
349 | {
350 | "name": "Johannes M. Schmitt",
351 | "email": "schmittjoh@gmail.com",
352 | "homepage": "http://jmsyst.com",
353 | "role": "Developer of wrapped JMSSerializerBundle"
354 | }
355 | ],
356 | "description": "Toolset for generating PHP code",
357 | "keywords": [
358 | "code generation"
359 | ]
360 | },
361 | {
362 | "name": "jms/di-extra-bundle",
363 | "version": "dev-master",
364 | "target-dir": "JMS/DiExtraBundle",
365 | "source": {
366 | "type": "git",
367 | "url": "https://github.com/schmittjoh/JMSDiExtraBundle",
368 | "reference": "4cfdb1fe6e380578dd459e71c060f655a94e28d7"
369 | },
370 | "dist": {
371 | "type": "zip",
372 | "url": "https://github.com/schmittjoh/JMSDiExtraBundle/zipball/4cfdb1fe6e380578dd459e71c060f655a94e28d7",
373 | "reference": "4cfdb1fe6e380578dd459e71c060f655a94e28d7",
374 | "shasum": ""
375 | },
376 | "require": {
377 | "jms/metadata": "1.1.*",
378 | "symfony/framework-bundle": ">=2.1.0,<2.3-dev",
379 | "symfony/process": ">=2.1.0,<2.3-dev",
380 | "symfony/finder": ">=2.1.0,<2.3-dev",
381 | "jms/aop-bundle": ">=1.0.0,<1.2-dev"
382 | },
383 | "require-dev": {
384 | "jms/security-extra-bundle": "1.*",
385 | "symfony/validator": "*",
386 | "symfony/form": "*",
387 | "symfony/class-loader": "*",
388 | "symfony/yaml": "*",
389 | "symfony/browser-kit": "*",
390 | "symfony/security-bundle": "*",
391 | "symfony/twig-bundle": "*",
392 | "sensio/framework-extra-bundle": "*",
393 | "doctrine/doctrine-bundle": "*",
394 | "doctrine/orm": "*"
395 | },
396 | "time": "1348217858",
397 | "type": "symfony-bundle",
398 | "extra": {
399 | "branch-alias": {
400 | "dev-master": "1.2.x-dev"
401 | }
402 | },
403 | "installation-source": "source",
404 | "autoload": {
405 | "psr-0": {
406 | "JMS\\DiExtraBundle": ""
407 | }
408 | },
409 | "license": [
410 | "Apache"
411 | ],
412 | "authors": [
413 | {
414 | "name": "Johannes M. Schmitt",
415 | "email": "schmittjoh@gmail.com",
416 | "homepage": "https://github.com/schmittjoh",
417 | "role": "Developer of wrapped JMSSerializerBundle"
418 | }
419 | ],
420 | "description": "Allows to configure dependency injection using annotations",
421 | "homepage": "http://jmsyst.com/bundles/JMSDiExtraBundle",
422 | "keywords": [
423 | "dependency injection",
424 | "annotations"
425 | ]
426 | },
427 | {
428 | "name": "jms/metadata",
429 | "version": "1.1.1",
430 | "source": {
431 | "type": "git",
432 | "url": "https://github.com/schmittjoh/metadata",
433 | "reference": "1.1.1"
434 | },
435 | "dist": {
436 | "type": "zip",
437 | "url": "https://github.com/schmittjoh/metadata/zipball/1.1.1",
438 | "reference": "1.1.1",
439 | "shasum": ""
440 | },
441 | "require": {
442 | "php": ">=5.3.0"
443 | },
444 | "time": "2012-01-02 21:32:49",
445 | "type": "library",
446 | "installation-source": "dist",
447 | "autoload": {
448 | "psr-0": {
449 | "Metadata\\": "src/"
450 | }
451 | },
452 | "license": [
453 | "Apache"
454 | ],
455 | "authors": [
456 | {
457 | "name": "Johannes M. Schmitt",
458 | "email": "schmittjoh@gmail.com",
459 | "homepage": "http://jmsyst.com",
460 | "role": "Developer of wrapped JMSSerializerBundle"
461 | }
462 | ],
463 | "description": "Class/method/property metadata management in PHP",
464 | "keywords": [
465 | "annotations",
466 | "yaml",
467 | "xml",
468 | "metadata"
469 | ]
470 | },
471 | {
472 | "name": "jms/security-extra-bundle",
473 | "version": "dev-master",
474 | "target-dir": "JMS/SecurityExtraBundle",
475 | "source": {
476 | "type": "git",
477 | "url": "https://github.com/schmittjoh/JMSSecurityExtraBundle",
478 | "reference": "daa4e93edc6e89ce809a76edc0866dcb3feb3306"
479 | },
480 | "dist": {
481 | "type": "zip",
482 | "url": "https://github.com/schmittjoh/JMSSecurityExtraBundle/zipball/daa4e93edc6e89ce809a76edc0866dcb3feb3306",
483 | "reference": "daa4e93edc6e89ce809a76edc0866dcb3feb3306",
484 | "shasum": ""
485 | },
486 | "require": {
487 | "jms/metadata": "1.1.*",
488 | "symfony/security-bundle": "*",
489 | "jms/di-extra-bundle": "1.2.*",
490 | "symfony/framework-bundle": ">=2.1.0,<2.3-dev",
491 | "jms/aop-bundle": ">=1.0.0,<1.2-dev"
492 | },
493 | "require-dev": {
494 | "sensio/framework-extra-bundle": "*",
495 | "symfony/class-loader": "*",
496 | "symfony/yaml": "*",
497 | "symfony/browser-kit": "*",
498 | "symfony/finder": "*",
499 | "symfony/css-selector": "*",
500 | "symfony/process": "*",
501 | "doctrine/doctrine-bundle": "*",
502 | "symfony/twig-bundle": "*",
503 | "doctrine/orm": "*",
504 | "symfony/form": "*",
505 | "symfony/validator": "*"
506 | },
507 | "time": "1348046640",
508 | "type": "symfony-bundle",
509 | "extra": {
510 | "branch-alias": {
511 | "dev-master": "1.3-dev"
512 | }
513 | },
514 | "installation-source": "source",
515 | "autoload": {
516 | "psr-0": {
517 | "JMS\\SecurityExtraBundle": ""
518 | }
519 | },
520 | "license": [
521 | "Apache2"
522 | ],
523 | "authors": [
524 | {
525 | "name": "Johannes M. Schmitt",
526 | "email": "schmittjoh@gmail.com",
527 | "homepage": "http://jmsyst.com",
528 | "role": "Developer of wrapped JMSSerializerBundle"
529 | }
530 | ],
531 | "description": "Enhances the Symfony2 Security Component by adding several new features",
532 | "homepage": "http://jmsyst.com/bundles/JMSSecurityExtraBundle",
533 | "keywords": [
534 | "annotations",
535 | "authorization",
536 | "security",
537 | "secure",
538 | "expression"
539 | ]
540 | },
541 | {
542 | "name": "kriswallsmith/assetic",
543 | "version": "dev-master",
544 | "source": {
545 | "type": "git",
546 | "url": "http://github.com/kriswallsmith/assetic.git",
547 | "reference": "a6baab9b4c4361aca51bf90ee47c1586dff3cb0c"
548 | },
549 | "dist": {
550 | "type": "zip",
551 | "url": "https://github.com/kriswallsmith/assetic/zipball/a6baab9b4c4361aca51bf90ee47c1586dff3cb0c",
552 | "reference": "a6baab9b4c4361aca51bf90ee47c1586dff3cb0c",
553 | "shasum": ""
554 | },
555 | "require": {
556 | "symfony/process": ">=2.1.0,<2.3-dev",
557 | "php": ">=5.3.1"
558 | },
559 | "require-dev": {
560 | "twig/twig": ">=1.6.0,<2.0",
561 | "leafo/lessphp": "*",
562 | "leafo/scssphp": "*",
563 | "ptachoire/cssembed": "*",
564 | "leafo/scssphp-compass": "*"
565 | },
566 | "suggest": {
567 | "twig/twig": "Assetic provides the integration with the Twig templating engine",
568 | "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
569 | "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
570 | "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
571 | "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin"
572 | },
573 | "time": "1347622188",
574 | "type": "library",
575 | "extra": {
576 | "branch-alias": {
577 | "dev-master": "1.1-dev"
578 | }
579 | },
580 | "installation-source": "source",
581 | "autoload": {
582 | "psr-0": {
583 | "Assetic": "src/"
584 | },
585 | "files": [
586 | "src/functions.php"
587 | ]
588 | },
589 | "license": [
590 | "MIT"
591 | ],
592 | "authors": [
593 | {
594 | "name": "Kris Wallsmith",
595 | "email": "kris.wallsmith@gmail.com",
596 | "homepage": "http://kriswallsmith.net/"
597 | }
598 | ],
599 | "description": "Asset Management for PHP",
600 | "homepage": "https://github.com/kriswallsmith/assetic",
601 | "keywords": [
602 | "assets",
603 | "compression",
604 | "minification"
605 | ]
606 | },
607 | {
608 | "name": "monolog/monolog",
609 | "version": "dev-master",
610 | "source": {
611 | "type": "git",
612 | "url": "https://github.com/Seldaek/monolog",
613 | "reference": "09b3a80cfaf3e323e348a5e817afeee98d5e6b48"
614 | },
615 | "dist": {
616 | "type": "zip",
617 | "url": "https://github.com/Seldaek/monolog/zipball/09b3a80cfaf3e323e348a5e817afeee98d5e6b48",
618 | "reference": "09b3a80cfaf3e323e348a5e817afeee98d5e6b48",
619 | "shasum": ""
620 | },
621 | "require": {
622 | "php": ">=5.3.0"
623 | },
624 | "require-dev": {
625 | "mlehner/gelf-php": "1.0.*"
626 | },
627 | "suggest": {
628 | "mlehner/gelf-php": "Allow sending log messages to a GrayLog2 server",
629 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
630 | "ext-mongo": "Allow sending log messages to a MongoDB server"
631 | },
632 | "time": "1347983448",
633 | "type": "library",
634 | "extra": {
635 | "branch-alias": {
636 | "dev-master": "1.3.x-dev"
637 | }
638 | },
639 | "installation-source": "source",
640 | "autoload": {
641 | "psr-0": {
642 | "Monolog": "src/"
643 | }
644 | },
645 | "license": [
646 | "MIT"
647 | ],
648 | "authors": [
649 | {
650 | "name": "Jordi Boggiano",
651 | "email": "j.boggiano@seld.be",
652 | "homepage": "http://seld.be",
653 | "role": "Developer"
654 | }
655 | ],
656 | "description": "Logging for PHP 5.3",
657 | "homepage": "http://github.com/Seldaek/monolog",
658 | "keywords": [
659 | "log",
660 | "logging"
661 | ]
662 | },
663 | {
664 | "name": "sensio/distribution-bundle",
665 | "version": "dev-master",
666 | "target-dir": "Sensio/Bundle/DistributionBundle",
667 | "source": {
668 | "type": "git",
669 | "url": "https://github.com/sensio/SensioDistributionBundle",
670 | "reference": "4e86595e02c6e3d76971f790d7c06ec434e1b513"
671 | },
672 | "dist": {
673 | "type": "zip",
674 | "url": "https://github.com/sensio/SensioDistributionBundle/zipball/4e86595e02c6e3d76971f790d7c06ec434e1b513",
675 | "reference": "4e86595e02c6e3d76971f790d7c06ec434e1b513",
676 | "shasum": ""
677 | },
678 | "require": {
679 | "symfony/framework-bundle": "2.2.*"
680 | },
681 | "time": "1347635342",
682 | "type": "symfony-bundle",
683 | "extra": {
684 | "branch-alias": {
685 | "dev-master": "2.2.x-dev"
686 | }
687 | },
688 | "installation-source": "source",
689 | "autoload": {
690 | "psr-0": {
691 | "Sensio\\Bundle\\DistributionBundle": ""
692 | }
693 | },
694 | "license": [
695 | "MIT"
696 | ],
697 | "authors": [
698 | {
699 | "name": "Fabien Potencier",
700 | "email": "fabien@symfony.com"
701 | }
702 | ],
703 | "description": "The base bundle for the Symfony Distributions",
704 | "keywords": [
705 | "distribution",
706 | "configuration"
707 | ]
708 | },
709 | {
710 | "name": "sensio/framework-extra-bundle",
711 | "version": "dev-master",
712 | "target-dir": "Sensio/Bundle/FrameworkExtraBundle",
713 | "source": {
714 | "type": "git",
715 | "url": "https://github.com/sensio/SensioFrameworkExtraBundle",
716 | "reference": "03e32da3fd1bb37e4c6f3c77f1b4cb8a3a78e0a8"
717 | },
718 | "dist": {
719 | "type": "zip",
720 | "url": "https://github.com/sensio/SensioFrameworkExtraBundle/zipball/03e32da3fd1bb37e4c6f3c77f1b4cb8a3a78e0a8",
721 | "reference": "03e32da3fd1bb37e4c6f3c77f1b4cb8a3a78e0a8",
722 | "shasum": ""
723 | },
724 | "require": {
725 | "doctrine/common": ">=2.1,<2.4-dev",
726 | "symfony/framework-bundle": "2.2.*"
727 | },
728 | "time": "1347340790",
729 | "type": "symfony-bundle",
730 | "extra": {
731 | "branch-alias": {
732 | "dev-master": "2.2.x-dev"
733 | }
734 | },
735 | "installation-source": "source",
736 | "autoload": {
737 | "psr-0": {
738 | "Sensio\\Bundle\\FrameworkExtraBundle": ""
739 | }
740 | },
741 | "license": [
742 | "MIT"
743 | ],
744 | "authors": [
745 | {
746 | "name": "Fabien Potencier",
747 | "email": "fabien@symfony.com"
748 | }
749 | ],
750 | "description": "This bundle provides a way to configure your controllers with annotations",
751 | "keywords": [
752 | "annotations",
753 | "controllers"
754 | ]
755 | },
756 | {
757 | "name": "sensio/generator-bundle",
758 | "version": "dev-master",
759 | "target-dir": "Sensio/Bundle/GeneratorBundle",
760 | "source": {
761 | "type": "git",
762 | "url": "https://github.com/sensio/SensioGeneratorBundle",
763 | "reference": "f5bda1014f5f124a0fd881644664493e36a09ad0"
764 | },
765 | "dist": {
766 | "type": "zip",
767 | "url": "https://github.com/sensio/SensioGeneratorBundle/zipball/f5bda1014f5f124a0fd881644664493e36a09ad0",
768 | "reference": "f5bda1014f5f124a0fd881644664493e36a09ad0",
769 | "shasum": ""
770 | },
771 | "require": {
772 | "symfony/framework-bundle": "2.2.*",
773 | "symfony/console": "2.2.*"
774 | },
775 | "require-dev": {
776 | "doctrine/orm": ">=2.1,<2.4-dev",
777 | "twig/twig": ">=1.8,<2.0-dev",
778 | "symfony/doctrine-bridge": "2.2.*"
779 | },
780 | "suggest": {
781 | "doctrine/doctrine-bundle": "to generate entities and their crud controller"
782 | },
783 | "time": "1348070473",
784 | "type": "symfony-bundle",
785 | "extra": {
786 | "branch-alias": {
787 | "dev-master": "2.2.x-dev"
788 | }
789 | },
790 | "installation-source": "source",
791 | "autoload": {
792 | "psr-0": {
793 | "Sensio\\Bundle\\GeneratorBundle": ""
794 | }
795 | },
796 | "license": [
797 | "MIT"
798 | ],
799 | "authors": [
800 | {
801 | "name": "Fabien Potencier",
802 | "email": "fabien@symfony.com"
803 | }
804 | ],
805 | "description": "This bundle generates code for you"
806 | },
807 | {
808 | "name": "swiftmailer/swiftmailer",
809 | "version": "dev-master",
810 | "source": {
811 | "type": "git",
812 | "url": "git://github.com/swiftmailer/swiftmailer.git",
813 | "reference": "1a987b45ea8dcbbe9680499800c67fc97a2d07f6"
814 | },
815 | "dist": {
816 | "type": "zip",
817 | "url": "https://github.com/swiftmailer/swiftmailer/zipball/1a987b45ea8dcbbe9680499800c67fc97a2d07f6",
818 | "reference": "1a987b45ea8dcbbe9680499800c67fc97a2d07f6",
819 | "shasum": ""
820 | },
821 | "require": {
822 | "php": ">=5.2.4"
823 | },
824 | "time": "1348747908",
825 | "type": "library",
826 | "extra": {
827 | "branch-alias": {
828 | "dev-master": "4.2-dev"
829 | }
830 | },
831 | "installation-source": "source",
832 | "autoload": {
833 | "files": [
834 | "lib/swift_required.php"
835 | ]
836 | },
837 | "license": [
838 | "LGPL"
839 | ],
840 | "authors": [
841 | {
842 | "name": "Fabien Potencier",
843 | "email": "fabien@symfony.com"
844 | },
845 | {
846 | "name": "Chris Corbyn"
847 | }
848 | ],
849 | "description": "Swiftmailer, free feature-rich PHP mailer",
850 | "homepage": "http://swiftmailer.org",
851 | "keywords": [
852 | "mail",
853 | "mailer"
854 | ]
855 | },
856 | {
857 | "name": "symfony/assetic-bundle",
858 | "version": "dev-master",
859 | "target-dir": "Symfony/Bundle/AsseticBundle",
860 | "source": {
861 | "type": "git",
862 | "url": "https://github.com/symfony/AsseticBundle",
863 | "reference": "5ebcf72d9b2d7028ca8c9b71b464ccc81d4795d2"
864 | },
865 | "dist": {
866 | "type": "zip",
867 | "url": "https://github.com/symfony/AsseticBundle/zipball/5ebcf72d9b2d7028ca8c9b71b464ccc81d4795d2",
868 | "reference": "5ebcf72d9b2d7028ca8c9b71b464ccc81d4795d2",
869 | "shasum": ""
870 | },
871 | "require": {
872 | "php": ">=5.3.0",
873 | "kriswallsmith/assetic": "1.1.*",
874 | "symfony/framework-bundle": ">=2.1.0,<2.3-dev"
875 | },
876 | "require-dev": {
877 | "symfony/twig-bundle": ">=2.1.0,<2.3-dev",
878 | "symfony/console": ">=2.1.0,<2.3-dev",
879 | "symfony/class-loader": ">=2.1.0,<2.3-dev",
880 | "symfony/yaml": ">=2.1.0,<2.3-dev",
881 | "symfony/form": ">=2.1.0,<2.3-dev",
882 | "symfony/dom-crawler": ">=2.1.0,<2.3-dev",
883 | "symfony/css-selector": ">=2.1.0,<2.3-dev"
884 | },
885 | "suggest": {
886 | "symfony/twig-bundle": ">=2.1.0,<2.3-dev"
887 | },
888 | "time": "1348938560",
889 | "type": "symfony-bundle",
890 | "extra": {
891 | "branch-alias": {
892 | "dev-master": "2.1.x-dev"
893 | }
894 | },
895 | "installation-source": "source",
896 | "autoload": {
897 | "psr-0": {
898 | "Symfony\\Bundle\\AsseticBundle": ""
899 | }
900 | },
901 | "license": [
902 | "MIT"
903 | ],
904 | "authors": [
905 | {
906 | "name": "Kris Wallsmith",
907 | "email": "kris.wallsmith@gmail.com",
908 | "homepage": "http://kriswallsmith.net/"
909 | }
910 | ],
911 | "description": "Integrates Assetic into Symfony2",
912 | "homepage": "https://github.com/symfony/AsseticBundle",
913 | "keywords": [
914 | "assets",
915 | "compression",
916 | "minification"
917 | ]
918 | },
919 | {
920 | "name": "symfony/monolog-bundle",
921 | "version": "dev-master",
922 | "target-dir": "Symfony/Bundle/MonologBundle",
923 | "source": {
924 | "type": "git",
925 | "url": "https://github.com/symfony/MonologBundle",
926 | "reference": "51517152a608926ee6b40ed8cfbba1a708f0a14f"
927 | },
928 | "dist": {
929 | "type": "zip",
930 | "url": "https://github.com/symfony/MonologBundle/zipball/51517152a608926ee6b40ed8cfbba1a708f0a14f",
931 | "reference": "51517152a608926ee6b40ed8cfbba1a708f0a14f",
932 | "shasum": ""
933 | },
934 | "require": {
935 | "php": ">=5.3.2",
936 | "monolog/monolog": "1.*",
937 | "symfony/monolog-bridge": ">=2.1.0,<2.3-dev",
938 | "symfony/dependency-injection": ">=2.1.0,<2.3-dev",
939 | "symfony/config": ">=2.1.0,<2.3-dev"
940 | },
941 | "require-dev": {
942 | "symfony/yaml": ">=2.1.0,<2.3-dev",
943 | "symfony/config": ">=2.1.0,<2.3-dev"
944 | },
945 | "time": "1348137624",
946 | "type": "symfony-bundle",
947 | "extra": {
948 | "branch-alias": {
949 | "dev-master": "2.1.x-dev"
950 | }
951 | },
952 | "installation-source": "source",
953 | "autoload": {
954 | "psr-0": {
955 | "Symfony\\Bundle\\MonologBundle": ""
956 | }
957 | },
958 | "license": [
959 | "MIT"
960 | ],
961 | "authors": [
962 | {
963 | "name": "Fabien Potencier",
964 | "email": "fabien@symfony.com"
965 | },
966 | {
967 | "name": "Symfony Community",
968 | "homepage": "http://symfony.com/contributors"
969 | }
970 | ],
971 | "description": "Symfony MonologBundle",
972 | "homepage": "http://symfony.com"
973 | },
974 | {
975 | "name": "symfony/swiftmailer-bundle",
976 | "version": "dev-master",
977 | "target-dir": "Symfony/Bundle/SwiftmailerBundle",
978 | "source": {
979 | "type": "git",
980 | "url": "https://github.com/symfony/SwiftmailerBundle",
981 | "reference": "e055faf5d7279f3c01ffd58f1548e0fc524b71d1"
982 | },
983 | "dist": {
984 | "type": "zip",
985 | "url": "https://github.com/symfony/SwiftmailerBundle/zipball/e055faf5d7279f3c01ffd58f1548e0fc524b71d1",
986 | "reference": "e055faf5d7279f3c01ffd58f1548e0fc524b71d1",
987 | "shasum": ""
988 | },
989 | "require": {
990 | "php": ">=5.3.2",
991 | "swiftmailer/swiftmailer": ">=4.2.0,<4.3-dev",
992 | "symfony/swiftmailer-bridge": ">=2.1.0,<2.3-dev"
993 | },
994 | "require-dev": {
995 | "symfony/dependency-injection": ">=2.1.0,<2.3-dev",
996 | "symfony/http-kernel": ">=2.1.0,<2.3-dev",
997 | "symfony/config": ">=2.1.0,<2.3-dev",
998 | "symfony/yaml": ">=2.1.0,<2.3-dev"
999 | },
1000 | "time": "1348137776",
1001 | "type": "symfony-bundle",
1002 | "extra": {
1003 | "branch-alias": {
1004 | "dev-master": "2.1-dev"
1005 | }
1006 | },
1007 | "installation-source": "source",
1008 | "autoload": {
1009 | "psr-0": {
1010 | "Symfony\\Bundle\\SwiftmailerBundle": ""
1011 | }
1012 | },
1013 | "license": [
1014 | "MIT"
1015 | ],
1016 | "authors": [
1017 | {
1018 | "name": "Fabien Potencier",
1019 | "email": "fabien@symfony.com"
1020 | },
1021 | {
1022 | "name": "Symfony Community",
1023 | "homepage": "http://symfony.com/contributors"
1024 | }
1025 | ],
1026 | "description": "Symfony SwiftmailerBundle",
1027 | "homepage": "http://symfony.com"
1028 | },
1029 | {
1030 | "name": "symfony/symfony",
1031 | "version": "dev-master",
1032 | "source": {
1033 | "type": "git",
1034 | "url": "git://github.com/symfony/symfony.git",
1035 | "reference": "dda2f7cdb3ca084b3a13d28b61f8b54fdeb3f543"
1036 | },
1037 | "dist": {
1038 | "type": "zip",
1039 | "url": "https://github.com/symfony/symfony/zipball/dda2f7cdb3ca084b3a13d28b61f8b54fdeb3f543",
1040 | "reference": "dda2f7cdb3ca084b3a13d28b61f8b54fdeb3f543",
1041 | "shasum": ""
1042 | },
1043 | "require": {
1044 | "doctrine/common": ">2.2,<2.4-dev",
1045 | "php": ">=5.3.3",
1046 | "twig/twig": ">=1.9.1,<2.0-dev"
1047 | },
1048 | "replace": {
1049 | "symfony/doctrine-bridge": "self.version",
1050 | "symfony/monolog-bridge": "self.version",
1051 | "symfony/propel1-bridge": "self.version",
1052 | "symfony/swiftmailer-bridge": "self.version",
1053 | "symfony/twig-bridge": "self.version",
1054 | "symfony/framework-bundle": "self.version",
1055 | "symfony/security-bundle": "self.version",
1056 | "symfony/twig-bundle": "self.version",
1057 | "symfony/web-profiler-bundle": "self.version",
1058 | "symfony/browser-kit": "self.version",
1059 | "symfony/class-loader": "self.version",
1060 | "symfony/config": "self.version",
1061 | "symfony/console": "self.version",
1062 | "symfony/css-selector": "self.version",
1063 | "symfony/dependency-injection": "self.version",
1064 | "symfony/dom-crawler": "self.version",
1065 | "symfony/event-dispatcher": "self.version",
1066 | "symfony/filesystem": "self.version",
1067 | "symfony/finder": "self.version",
1068 | "symfony/form": "self.version",
1069 | "symfony/http-foundation": "self.version",
1070 | "symfony/http-kernel": "self.version",
1071 | "symfony/locale": "self.version",
1072 | "symfony/options-resolver": "self.version",
1073 | "symfony/process": "self.version",
1074 | "symfony/routing": "self.version",
1075 | "symfony/security": "self.version",
1076 | "symfony/serializer": "self.version",
1077 | "symfony/templating": "self.version",
1078 | "symfony/translation": "self.version",
1079 | "symfony/validator": "self.version",
1080 | "symfony/yaml": "self.version"
1081 | },
1082 | "require-dev": {
1083 | "doctrine/data-fixtures": "1.0.*",
1084 | "propel/propel1": "dev-master",
1085 | "monolog/monolog": "dev-master",
1086 | "doctrine/dbal": ">=2.2,<2.4-dev",
1087 | "doctrine/orm": ">=2.2.3,<2.4-dev"
1088 | },
1089 | "suggest": {
1090 | "doctrine/data-fixtures": "1.0.*"
1091 | },
1092 | "time": "1348937500",
1093 | "type": "library",
1094 | "extra": {
1095 | "branch-alias": {
1096 | "dev-master": "2.2-dev"
1097 | }
1098 | },
1099 | "installation-source": "source",
1100 | "autoload": {
1101 | "psr-0": {
1102 | "Symfony\\": "src/"
1103 | },
1104 | "classmap": [
1105 | "src/Symfony/Component/HttpFoundation/Resources/stubs",
1106 | "src/Symfony/Component/Locale/Resources/stubs"
1107 | ]
1108 | },
1109 | "license": [
1110 | "MIT"
1111 | ],
1112 | "authors": [
1113 | {
1114 | "name": "Fabien Potencier",
1115 | "email": "fabien@symfony.com"
1116 | },
1117 | {
1118 | "name": "Symfony Community",
1119 | "homepage": "http://symfony.com/contributors"
1120 | }
1121 | ],
1122 | "description": "The Symfony PHP framework",
1123 | "homepage": "http://symfony.com",
1124 | "keywords": [
1125 | "framework"
1126 | ]
1127 | },
1128 | {
1129 | "name": "twig/extensions",
1130 | "version": "dev-master",
1131 | "source": {
1132 | "type": "git",
1133 | "url": "https://github.com/fabpot/Twig-extensions",
1134 | "reference": "f904575642b1213db69b4a98f08397e722ba1cae"
1135 | },
1136 | "dist": {
1137 | "type": "zip",
1138 | "url": "https://github.com/fabpot/Twig-extensions/zipball/f904575642b1213db69b4a98f08397e722ba1cae",
1139 | "reference": "f904575642b1213db69b4a98f08397e722ba1cae",
1140 | "shasum": ""
1141 | },
1142 | "require": {
1143 | "twig/twig": "1.*"
1144 | },
1145 | "time": "1346770278",
1146 | "type": "library",
1147 | "extra": {
1148 | "branch-alias": {
1149 | "dev-master": "1.0.x-dev"
1150 | }
1151 | },
1152 | "installation-source": "source",
1153 | "autoload": {
1154 | "psr-0": {
1155 | "Twig_Extensions_": "lib/"
1156 | }
1157 | },
1158 | "license": [
1159 | "MIT"
1160 | ],
1161 | "authors": [
1162 | {
1163 | "name": "Fabien Potencier",
1164 | "email": "fabien@symfony.com"
1165 | }
1166 | ],
1167 | "description": "Common additional features for Twig that do not directly belong in core",
1168 | "homepage": "https://github.com/fabpot/Twig-extensions",
1169 | "keywords": [
1170 | "debug",
1171 | "i18n",
1172 | "text"
1173 | ]
1174 | },
1175 | {
1176 | "name": "twig/twig",
1177 | "version": "dev-master",
1178 | "source": {
1179 | "type": "git",
1180 | "url": "git://github.com/fabpot/Twig.git",
1181 | "reference": "120cde3fa54c31047edf1cd003752ca119dec9a8"
1182 | },
1183 | "dist": {
1184 | "type": "zip",
1185 | "url": "https://github.com/fabpot/Twig/zipball/120cde3fa54c31047edf1cd003752ca119dec9a8",
1186 | "reference": "120cde3fa54c31047edf1cd003752ca119dec9a8",
1187 | "shasum": ""
1188 | },
1189 | "require": {
1190 | "php": ">=5.2.4"
1191 | },
1192 | "time": "1348936415",
1193 | "type": "library",
1194 | "extra": {
1195 | "branch-alias": {
1196 | "dev-master": "1.10-dev"
1197 | }
1198 | },
1199 | "installation-source": "source",
1200 | "autoload": {
1201 | "psr-0": {
1202 | "Twig_": "lib/"
1203 | }
1204 | },
1205 | "license": [
1206 | "BSD-3"
1207 | ],
1208 | "authors": [
1209 | {
1210 | "name": "Fabien Potencier",
1211 | "email": "fabien@symfony.com"
1212 | },
1213 | {
1214 | "name": "Armin Ronacher",
1215 | "email": "armin.ronacher@active-4.com"
1216 | }
1217 | ],
1218 | "description": "Twig, the flexible, fast, and secure template language for PHP",
1219 | "homepage": "http://twig.sensiolabs.org",
1220 | "keywords": [
1221 | "templating"
1222 | ]
1223 | }
1224 | ],
1225 | "packages-dev": [
1226 |
1227 | ],
1228 | "aliases": [
1229 |
1230 | ],
1231 | "minimum-stability": "dev",
1232 | "stability-flags": [
1233 |
1234 | ]
1235 | }
1236 |
--------------------------------------------------------------------------------
/src/.htaccess:
--------------------------------------------------------------------------------
1 | deny from all
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/AcmeDemoBundle.php:
--------------------------------------------------------------------------------
1 | $name);
31 | }
32 |
33 | /**
34 | * @Route("/contact", name="_demo_contact")
35 | * @Template()
36 | */
37 | public function contactAction()
38 | {
39 | $form = $this->get('form.factory')->create(new ContactType());
40 |
41 | $request = $this->get('request');
42 | if ('POST' == $request->getMethod()) {
43 | $form->bindRequest($request);
44 | if ($form->isValid()) {
45 | $mailer = $this->get('mailer');
46 | // .. setup a message and send it
47 | // http://symfony.com/doc/current/cookbook/email.html
48 |
49 | $this->get('session')->setFlash('notice', 'Message sent!');
50 |
51 | return new RedirectResponse($this->generateUrl('_demo'));
52 | }
53 | }
54 |
55 | return array('form' => $form->createView());
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Controller/SecuredController.php:
--------------------------------------------------------------------------------
1 | get('request')->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
23 | $error = $this->get('request')->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
24 | } else {
25 | $error = $this->get('request')->getSession()->get(SecurityContext::AUTHENTICATION_ERROR);
26 | }
27 |
28 | return array(
29 | 'last_username' => $this->get('request')->getSession()->get(SecurityContext::LAST_USERNAME),
30 | 'error' => $error,
31 | );
32 | }
33 |
34 | /**
35 | * @Route("/login_check", name="_security_check")
36 | */
37 | public function securityCheckAction()
38 | {
39 | // The security layer will intercept this request
40 | }
41 |
42 | /**
43 | * @Route("/logout", name="_demo_logout")
44 | */
45 | public function logoutAction()
46 | {
47 | // The security layer will intercept this request
48 | }
49 |
50 | /**
51 | * @Route("/hello", defaults={"name"="World"}),
52 | * @Route("/hello/{name}", name="_demo_secured_hello")
53 | * @Template()
54 | */
55 | public function helloAction($name)
56 | {
57 | return array('name' => $name);
58 | }
59 |
60 | /**
61 | * @Route("/hello/admin/{name}", name="_demo_secured_hello_admin")
62 | * @Secure(roles="ROLE_ADMIN")
63 | * @Template()
64 | */
65 | public function helloadminAction($name)
66 | {
67 | return array('name' => $name);
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Controller/WelcomeController.php:
--------------------------------------------------------------------------------
1 | render('AcmeDemoBundle:Welcome:index.html.twig');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/DependencyInjection/AcmeDemoExtension.php:
--------------------------------------------------------------------------------
1 | load('services.xml');
16 | }
17 |
18 | public function getAlias()
19 | {
20 | return 'acme_demo';
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/EventListener/ControllerListener.php:
--------------------------------------------------------------------------------
1 | extension = $extension;
17 | }
18 |
19 | public function onKernelController(FilterControllerEvent $event)
20 | {
21 | if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
22 | $this->extension->setController($event->getController());
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Form/ContactType.php:
--------------------------------------------------------------------------------
1 | add('email', 'email');
13 | $builder->add('message', 'textarea');
14 | }
15 |
16 | public function getName()
17 | {
18 | return 'contact';
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/config/services.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/public/css/demo.css:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (c) 2010, Yahoo! Inc. All rights reserved.
3 | Code licensed under the BSD License:
4 | http://developer.yahoo.com/yui/license.html
5 | version: 2.8.2r1
6 |
7 | Reset
8 | */
9 |
10 | html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var,optgroup{font-style:inherit;font-weight:inherit;}del,ins{text-decoration:none;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:baseline;}sub{vertical-align:baseline;}legend{color:#000;}input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;}input,button,textarea,select{*font-size:100%;}
11 |
12 | html, body
13 | {
14 | background-color: #EFEFEF;
15 | }
16 |
17 | body
18 | {
19 | font-size: 14px;
20 | font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
21 | color: #313131;
22 | }
23 |
24 | a
25 | {
26 | color: #08C;
27 | text-decoration: none;
28 | }
29 |
30 | a:hover
31 | {
32 | text-decoration: underline;
33 | }
34 |
35 | strong
36 | {
37 | font-weight: bold;
38 | }
39 |
40 | em
41 | {
42 | font-style: italic;
43 | }
44 |
45 | h1, h2, h3
46 | {
47 | font-family: Georgia, "Times New Roman", Times, serif;
48 | color: #404040;
49 | }
50 |
51 | h1
52 | {
53 | font-size: 45px;
54 | padding-bottom: 30px;
55 | }
56 |
57 | h2
58 | {
59 | font-weight: bold;
60 | color: #FFFFFF;
61 | /* Font is duplicated of body (sans-serif) */
62 | font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
63 |
64 | margin-bottom: 10px;
65 | background-color: #aacd4e;
66 | padding: 2px 4px;
67 | display: inline-block;
68 | text-transform: uppercase;
69 |
70 | }
71 |
72 | p
73 | {
74 | line-height: 20px;
75 | padding-bottom: 20px;
76 | }
77 |
78 | ul#demo-list a
79 | {
80 | background: url(../images/blue-arrow.png) no-repeat right 6px;
81 | padding-right: 10px;
82 | margin-right: 30px;
83 | }
84 |
85 | ul, ol
86 | {
87 | padding-left: 20px;
88 | }
89 |
90 | li
91 | {
92 | padding-bottom: 18px;
93 | }
94 |
95 | ol li
96 | {
97 | list-style-type: decimal;
98 | }
99 |
100 | ul li
101 | {
102 | list-style-type: none;
103 | }
104 |
105 | #symfony-header
106 | {
107 | position: relative;
108 | padding: 30px 30px 20px 30px;
109 | }
110 |
111 | #symfony-wrapper
112 | {
113 | width: 970px;
114 | margin: 0 auto;
115 | }
116 |
117 | .symfony-content
118 | {
119 | background-color: white;
120 | border: 1px solid #DFDFDF;
121 | padding: 50px;
122 | -moz-border-radius: 16px;
123 | -webkit-border-radius: 16px;
124 | border-radius: 16px;
125 | margin-bottom: 20px;
126 | word-wrap: break-word;
127 | }
128 |
129 | #symfony-search
130 | {
131 | position: absolute;
132 | top: 50px;
133 | right: 30px;
134 | }
135 |
136 | #symfony-search input[type="search"]
137 | {
138 | -webkit-appearance: textfield;
139 | }
140 |
141 | #symfony-search-field
142 | {
143 | width: 190px;
144 | }
145 |
146 | #symfony-search label
147 | {
148 | display: block;
149 | float: left;
150 | width: 20px;
151 | height: 25px;
152 | background: url(../images/search.png) no-repeat left 5px;
153 | }
154 |
155 | #symfony-search label span
156 | {
157 | display: none;
158 | }
159 |
160 | input[type=text], input[type=password]
161 | {
162 | border: 1px solid #DADADA;
163 | background: white url(../images/field-background.gif) repeat-x left top;
164 | padding: 5px 6px;
165 | color: #565656;
166 | font-family: 'Lucida Sans Unicode', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif;
167 | font-size: 12px;
168 | }
169 |
170 | .symfony-button-grey,
171 | .symfony-button-green
172 | {
173 | font-size: 0.85em;
174 | font-weight: bold;
175 |
176 | cursor: pointer;
177 |
178 | display: inline-block;
179 | outline: none;
180 |
181 | text-align: center;
182 | text-transform: uppercase;
183 |
184 | padding: 3px 10px;
185 |
186 | text-shadow: 0 1px 1px rgba(0,0,0,.3);
187 |
188 | -webkit-border-radius: 4px;
189 | -moz-border-radius: 4px;
190 | border-radius: 4px;
191 | }
192 |
193 | .symfony-button-grey
194 | {
195 | color: #868686;
196 | font-weight: normal;
197 |
198 | padding: 5px 10px;
199 | border: solid 1px #d7d7d7;
200 | background: #ffffff;
201 | background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#d7d7d7));
202 | background: -moz-linear-gradient(top, #ffffff, #d7d7d7);
203 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#d7d7d7');
204 | }
205 |
206 | .symfony-button-green
207 | {
208 | padding: 5px 12px;
209 |
210 | color: white;
211 |
212 | border: solid 1px #a7da39;
213 | background: #a7da39;
214 | background: -webkit-gradient(linear, left top, left bottom, from(#a7da39), to(#6a9211));
215 | background: -moz-linear-gradient(top, #a7da39, #6a9211);
216 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#a7da39', endColorstr='#6a9211');
217 | }
218 |
219 | .symfony-blocks-welcome
220 | {
221 | overflow: hidden;
222 | }
223 |
224 | .symfony-blocks-welcome > div
225 | {
226 | background-color: whitesmoke;
227 | float: left;
228 | width: 240px;
229 | margin-right: 14px;
230 | text-align: center;
231 | padding: 26px 20px;
232 | }
233 |
234 | .symfony-blocks-welcome > div.block-demo
235 | {
236 | margin-right: 0;
237 | }
238 |
239 | .symfony-blocks-welcome .illustration
240 | {
241 | padding-bottom: 20px;
242 | }
243 |
244 | .symfony-blocks-help
245 | {
246 | overflow: hidden;
247 | }
248 |
249 | .symfony-blocks-help
250 | {
251 | margin-top: 30px;
252 | padding: 18px;
253 | border: 1px solid #E6E6E6;
254 | }
255 |
256 | .symfony-blocks-help > div
257 | {
258 | width: 254px;
259 | float: left;
260 | }
261 |
262 | .flash-message
263 | {
264 | padding: 10px;
265 | margin: 5px;
266 | margin-top: 15px;
267 | background-color: #ffe;
268 | }
269 |
270 | .error
271 | {
272 | color: red;
273 | }
274 |
275 | #login label, #contact_form label
276 | {
277 | display: block;
278 | float: left;
279 | width: 90px;
280 | }
281 |
282 | ul#menu
283 | {
284 | float: right;
285 | margin-bottom: 20px;
286 | padding-left: 0;
287 | }
288 |
289 | #menu li
290 | {
291 | padding-left: 0;
292 | margin-right: 10px;
293 | display: inline;
294 | }
295 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/public/images/blue-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsmith77/symfony-standard/0ed803cf4ce556156524aaf72a966df881ab9f90/src/Acme/DemoBundle/Resources/public/images/blue-arrow.png
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/public/images/field-background.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsmith77/symfony-standard/0ed803cf4ce556156524aaf72a966df881ab9f90/src/Acme/DemoBundle/Resources/public/images/field-background.gif
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/public/images/logo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsmith77/symfony-standard/0ed803cf4ce556156524aaf72a966df881ab9f90/src/Acme/DemoBundle/Resources/public/images/logo.gif
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/public/images/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsmith77/symfony-standard/0ed803cf4ce556156524aaf72a966df881ab9f90/src/Acme/DemoBundle/Resources/public/images/search.png
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/public/images/welcome-configure.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsmith77/symfony-standard/0ed803cf4ce556156524aaf72a966df881ab9f90/src/Acme/DemoBundle/Resources/public/images/welcome-configure.gif
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/public/images/welcome-demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsmith77/symfony-standard/0ed803cf4ce556156524aaf72a966df881ab9f90/src/Acme/DemoBundle/Resources/public/images/welcome-demo.gif
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/public/images/welcome-quick-tour.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsmith77/symfony-standard/0ed803cf4ce556156524aaf72a966df881ab9f90/src/Acme/DemoBundle/Resources/public/images/welcome-quick-tour.gif
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/views/Demo/contact.html.twig:
--------------------------------------------------------------------------------
1 | {% extends "AcmeDemoBundle::layout.html.twig" %}
2 |
3 | {% block title "Symfony - Contact form" %}
4 |
5 | {% block content %}
6 |
15 | {% endblock %}
16 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/views/Demo/hello.html.twig:
--------------------------------------------------------------------------------
1 | {% extends "AcmeDemoBundle::layout.html.twig" %}
2 |
3 | {% block title "Hello " ~ name %}
4 |
5 | {% block content %}
6 | Hello {{ name }}!
7 | {% endblock %}
8 |
9 | {% set code = code(_self) %}
10 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/views/Demo/index.html.twig:
--------------------------------------------------------------------------------
1 | {% extends "AcmeDemoBundle::layout.html.twig" %}
2 |
3 | {% block title "Symfony - Demos" %}
4 |
5 | {% block content_header '' %}
6 |
7 | {% block content %}
8 | Available demos
9 |
14 | {% endblock %}
15 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/views/Secured/hello.html.twig:
--------------------------------------------------------------------------------
1 | {% extends "AcmeDemoBundle:Secured:layout.html.twig" %}
2 |
3 | {% block title "Hello " ~ name %}
4 |
5 | {% block content %}
6 | Hello {{ name }}!
7 |
8 | Hello resource secured for admin only.
9 | {% endblock %}
10 |
11 | {% set code = code(_self) %}
12 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/views/Secured/helloadmin.html.twig:
--------------------------------------------------------------------------------
1 | {% extends "AcmeDemoBundle:Secured:layout.html.twig" %}
2 |
3 | {% block title "Hello " ~ name %}
4 |
5 | {% block content %}
6 | Hello {{ name }} secured for Admins only!
7 | {% endblock %}
8 |
9 | {% set code = code(_self) %}
10 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/views/Secured/layout.html.twig:
--------------------------------------------------------------------------------
1 | {% extends "AcmeDemoBundle::layout.html.twig" %}
2 |
3 | {% block content_header_more %}
4 | {{ parent() }}
5 | logged in as {{ app.user ? app.user.username : 'Anonymous' }} - Logout
6 | {% endblock %}
7 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/views/Secured/login.html.twig:
--------------------------------------------------------------------------------
1 | {% extends 'AcmeDemoBundle::layout.html.twig' %}
2 |
3 | {% block content %}
4 | Login
5 |
6 |
7 | Choose between two default users: user/userpass (ROLE_USER) or admin/adminpass (ROLE_ADMIN)
8 |
9 |
10 | {% if error %}
11 | {{ error.message }}
12 | {% endif %}
13 |
14 |
27 | {% endblock %}
28 |
29 | {% set code = code(_self) %}
30 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/views/Welcome/index.html.twig:
--------------------------------------------------------------------------------
1 | {% extends 'AcmeDemoBundle::layout.html.twig' %}
2 |
3 | {% block title %}Symfony - Welcome{% endblock %}
4 |
5 | {% block content_header '' %}
6 |
7 | {% block content %}
8 | {% set version = constant('Symfony\\Component\\HttpKernel\\Kernel::MAJOR_VERSION') ~ '.' ~ constant('Symfony\\Component\\HttpKernel\\Kernel::MINOR_VERSION')%}
9 |
10 | Welcome!
11 |
12 | Congratulations! You have successfully installed a new Symfony application.
13 |
14 |
15 |
21 | {% if app.environment == 'dev' %}
22 |
28 | {% endif %}
29 |
35 |
36 |
37 |
65 | {% endblock %}
66 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Resources/views/layout.html.twig:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {% block title %}Demo Bundle{% endblock %}
6 |
7 |
8 |
9 |
10 |
11 |
21 |
22 | {% for flashMessage in app.session.flashbag.get('notice') %}
23 |
24 | Notice : {{ flashMessage }}
25 |
26 | {% endfor %}
27 |
28 | {% block content_header %}
29 |
34 |
35 |
36 | {% endblock %}
37 |
38 |
39 | {% block content %}
40 | {% endblock %}
41 |
42 |
43 | {% if code is defined %}
44 |
Code behind this page
45 |
{{ code|raw }}
46 | {% endif %}
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php:
--------------------------------------------------------------------------------
1 | request('GET', '/demo/hello/Fabien');
14 |
15 | $this->assertTrue($crawler->filter('html:contains("Hello Fabien")')->count() > 0);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Acme/DemoBundle/Twig/Extension/DemoExtension.php:
--------------------------------------------------------------------------------
1 | loader = $loader;
17 | }
18 |
19 | public function setController($controller)
20 | {
21 | $this->controller = $controller;
22 | }
23 |
24 | /**
25 | * {@inheritdoc}
26 | */
27 | public function getFunctions()
28 | {
29 | return array(
30 | 'code' => new \Twig_Function_Method($this, 'getCode', array('is_safe' => array('html'))),
31 | );
32 | }
33 |
34 | public function getCode($template)
35 | {
36 | // highlight_string highlights php code only if 'getControllerCode(), true);
38 | $controller = str_replace('<?php ', ' ', $controller);
39 |
40 | $template = htmlspecialchars($this->getTemplateCode($template), ENT_QUOTES, 'UTF-8');
41 |
42 | // remove the code block
43 | $template = str_replace('{% set code = code(_self) %}', '', $template);
44 |
45 | return <<Controller Code
47 | $controller
48 |
49 | Template Code
50 | $template
51 | EOF;
52 | }
53 |
54 | protected function getControllerCode()
55 | {
56 | $class = get_class($this->controller[0]);
57 | if (class_exists('CG\Core\ClassUtils')) {
58 | $class = ClassUtils::getUserClass($class);
59 | }
60 |
61 | $r = new \ReflectionClass($class);
62 | $m = $r->getMethod($this->controller[1]);
63 |
64 | $code = file($r->getFilename());
65 |
66 | return ' '.$m->getDocComment()."\n".implode('', array_slice($code, $m->getStartline() - 1, $m->getEndLine() - $m->getStartline() + 1));
67 | }
68 |
69 | protected function getTemplateCode($template)
70 | {
71 | return $this->loader->getSource($template->getTemplateName());
72 | }
73 |
74 | /**
75 | * Returns the name of the extension.
76 | *
77 | * @return string The extension name
78 | */
79 | public function getName()
80 | {
81 | return 'demo';
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/web/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | RewriteEngine On
3 |
4 | #
5 | # RewriteBase /
6 | #
7 |
8 | RewriteCond %{REQUEST_FILENAME} !-f
9 | RewriteRule ^(.*)$ app.php [QSA,L]
10 |
11 |
--------------------------------------------------------------------------------
/web/app.php:
--------------------------------------------------------------------------------
1 | register(true);
14 | */
15 |
16 | require_once __DIR__.'/../app/AppKernel.php';
17 | //require_once __DIR__.'/../app/AppCache.php';
18 |
19 | $kernel = new AppKernel('prod', false);
20 | $kernel->loadClassCache();
21 | //$kernel = new AppCache($kernel);
22 | $request = Request::createFromGlobals();
23 | $response = $kernel->handle($request);
24 | $response->send();
25 | $kernel->terminate($request, $response);
26 |
--------------------------------------------------------------------------------
/web/app_dev.php:
--------------------------------------------------------------------------------
1 | loadClassCache();
27 | $request = Request::createFromGlobals();
28 | $response = $kernel->handle($request);
29 | $response->send();
30 | $kernel->terminate($request, $response);
31 |
--------------------------------------------------------------------------------
/web/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsmith77/symfony-standard/0ed803cf4ce556156524aaf72a966df881ab9f90/web/apple-touch-icon.png
--------------------------------------------------------------------------------
/web/config.php:
--------------------------------------------------------------------------------
1 | getFailedRequirements();
20 | $minorProblems = $symfonyRequirements->getFailedRecommendations();
21 |
22 | ?>
23 |
24 |
25 |
26 |
27 |
28 | Symfony Configuration
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
Welcome!
40 |
Welcome to your new Symfony project.
41 |
42 | This script will guide you through the basic configuration of your project.
43 | You can also do the same by editing the ‘app/config/parameters.yml ’ file directly.
44 |
45 |
46 |
47 |
Major problems
48 |
Major problems have been detected and must be fixed before continuing:
49 |
50 |
51 | getHelpHtml() ?>
52 |
53 |
54 |
55 |
56 |
57 |
Recommendations
58 |
59 | Additionally, toTo enhance your Symfony experience,
60 | it’s recommended that you fix the following:
61 |
62 |
63 |
64 | getHelpHtml() ?>
65 |
66 |
67 |
68 |
69 | hasPhpIniConfigIssue()): ?>
70 |
*
71 | getPhpIniConfigPath()): ?>
72 | Changes to the php.ini file must be done in "getPhpIniConfigPath() ?> ".
73 |
74 | To change settings, create a "php.ini ".
75 |
76 |
77 |
78 |
79 |
80 |
Your configuration looks good to run Symfony.
81 |
82 |
83 |
92 |
93 |
94 |
95 |
Symfony Standard Edition
96 |
97 |
98 |
99 |
--------------------------------------------------------------------------------
/web/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lsmith77/symfony-standard/0ed803cf4ce556156524aaf72a966df881ab9f90/web/favicon.ico
--------------------------------------------------------------------------------
/web/robots.txt:
--------------------------------------------------------------------------------
1 | # www.robotstxt.org/
2 | # www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
3 |
4 | User-agent: *
5 |
--------------------------------------------------------------------------------