├── .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 |
7 | {{ form_errors(form) }} 8 | 9 | {{ form_row(form.email) }} 10 | {{ form_row(form.message) }} 11 | 12 | {{ form_rest(form) }} 13 | 14 |
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 |
    15 |
    16 | 17 | 18 |
    19 | 20 |
    21 | 22 | 23 |
    24 | 25 | 26 |
    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 |
    16 |
    17 | Quick tour 18 |
    19 | Read the Quick Tour 20 |
    21 | {% if app.environment == 'dev' %} 22 |
    23 |
    24 | Configure your application 25 |
    26 | Configure 27 |
    28 | {% endif %} 29 |
    30 |
    31 | Demo 32 |
    33 | Run The Demo 34 |
    35 |
    36 | 37 |
    38 |
    39 | 47 |
    48 |
    49 | 54 |
    55 |
    56 | 63 |
    64 |
    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 |
    12 | 13 | Symfony logo 14 | 15 | 20 |
    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 | 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 |
    1. getHelpHtml() ?>
    2. 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 |
    1. getHelpHtml() ?>
    2. 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 | --------------------------------------------------------------------------------