5/22/2014 - 3:14 PM

Symfony Setup / Config / Some Fundamentals

Symfony Setup / Config / Some Fundamentals

SETUP (Vanilla Demo Install)

Install apc
  sudo pecl install apc
Install composer 
  curl -sS | php
  sudo mv composer.phar /usr/local/bin/composer
composer create-project symfony/framework-standard-edition myproject/ ~2.4
 - Example new project through composer
php app/check.php
  - Checks environment / current settings
php app/console server:run
  - Starts application

app/console --version
- Show Symfony Version  

php ./bin/vendors install --reinstall  
 - "Old install Mech"

app <- general app stuff
app/config <- app config, routing
src <- bundles
src/publisher <- dir for bundles from a publisher
src/publisher/bundle <- an actual bundle directory

  Create (empty) bundle class in root directory, e.g.
    // src/<publisher>/<bundle>/<publisherBundle>.php
    namespace <publisher>\<bundle>;
    use Symfony\Component\HttpKernel\Bundle\Bundle;
    class <publisherBundle> extends Bundle
  Add this to app/AppKernel.php e.g. add 'new <publisher>\<bundle>\<publisherBundle>(),' to bundles array
app/config/routing.yml + app/config/routing_dev.yml
 - Production and development Request to Controller mapping

Example import of routing from bundle
  resource: @<Bundle>/<pathToController>
Example routes
    path: <path>
    defaults: { _controller: <bundle>:<controller>:<action> }

    resource: "@<bundle>/<controller>"
    type:     annotation
    prefix:   <prefix>
File structure / Logical Name / namespace relation
e.g. src/Acme/DemoBundle/Controller/DemoController
  -> Namespace = Acme\DemoBundle\Controller
  -> Bundle = AcmeDemoBundle

Example annotation route (on controller method) (when specified by defined route)
     * @Route("/hello/{name}", name="_demo_hello")
     * @Template()
     //$name can be passed to controller method
     //Template() will include template defined by controller / action name 
      (e.g. src/<pub>/<bundle>/Resources/views/Demo/hello.html.twig)
      - Passes values returned from action method to template

Example include in controller (instead of annotation)
$this->render('AcmeDemoBundle:Demo:hello.html.twig', array(
    'name' => $name,

CONFIG (app/config)
  - Routing and config files
  - Production and development versions
  - Lots of duplication so dev configs should import productions and augment
    - { resource: <resource> }

API Index:


e.g. Logical Name =  AcmeDemoBundle:Welcome:index.html.twig
  -> /src/Acme/DemoBundle/Resources/views/Welcome/index.html.twig