1. Download Symfony2 Standard Edition
2. extract :
   tar -zxvf Symfony_Standard_Vendors_2.0.0BETA2.tgz3. set permission :   chmod 777 app/cache app/logs4. Point your server to “web/” as root directory and you already would have to see symfony2 welcome page at http://127.0.0.1/app_dev.php/ 5. setup database config:   vi app/config/parameter.yml6. Creating our first bundleASF/Bundle/StoreBundle --no-interaction7. add to app/AppKernel.php : $bundles = array(    // ...    new ASF\StoreBundle\ASFStoreBundle(),);8. add to app/config/routing.ymlasf_store:
    resource: "@ASFStoreBundle/Resources/config/routing.yml"
    prefix:   /store9. Creating a controller :vi src/ASF/StoreBundle/Controller/StoreController.php//ASF/StoreBundle/Controller/StoreController.php<?phpnamespace ASF\StoreBundle\Controller;use Symfony\Bundle\FrameworkBundle\Controller\Controller;use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;class StoreController extends Controller{    /**     * @Template()     */    public function indexAction($store)    {        return array('store' => $store);    }}10. add to src/ASF/StoreBundle/Resources/config/routing.ymlasf_mystore:
    pattern:  /store/{store}
    defaults: { _controller: ASFStoreBundle:Store:index }11. add a view vi src/ASF/StoreBundle/Resources/views/Store/index.html.twigSo you want store "{{ store }}"? 12. Done  going to http://127.0.0.1/app_dev.php/store/my-store 
13. Model
- define a model  store/category
- Store model 
- vi 
ASF/StoreBundle/Entity/Store.php <?php// ASF/storeBundle/Entity/Store.phpnamespace ASF\StoreBundle\Entity;use Doctrine\ORM\Mapping as ORM;/** * @ORM\Entity */class Store{    /**     * @ORM\Id     * @ORM\Column(type="integer")     * @ORM\GeneratedValue(strategy="AUTO")     */     protected $id;    /**     * @ORM\ManyToMany(targetEntity="Category")     * @ORM\JoinTable(name="stores_categories",     *      joinColumns={@ORM\JoinColumn(name="store_id", referencedColumnName="id")},     *      inverseJoinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="id")})     */    protected $categories;    /**     * @ORM\Column(type="string", length=255)     */    protected $url;    /**     * @ORM\Column(type="string", length=255)     */    protected $name;    /**     * @ORM\Column(type="integer")     */    protected $clicks = 0;    /**     * @ORM\Column(type="boolean")     */    protected $validated = false;    /**     * @ORM\Column(type="integer")     */    protected $pcomments = 0;    /**     * @ORM\Column(type="integer")     */    protected $ncomments = 0;    /**     * @ORM\Column(type="boolean")     */    protected $active = false;    /**     * @ORM\Column(type="datetime", name="updated_at")     */    protected $updatedAt;    /**     * @ORM\Column(type="datetime", name="created_at")     */    protected $createdAt;    public function __construct()    {        $this->categories = new \Doctrine\Common\Collections\ArrayCollection();        $this->createdAt = new \DateTime();        $this->updatedAt = new \DateTime();    }}
- Store model 
- vi 
ASF/StoreBundle/Entity/Category.php <?php// ASF/StoreBundle/Entity/Category.phpnamespace ASF\StoreBundle\Entity;use Doctrine\ORM\Mapping as ORM;/** * @ORM\Entity */class Category{    /**     * @ORM\Id     * @ORM\Column(type="integer")     * @ORM\GeneratedValue(strategy="AUTO")     */    protected $id;    /**     * @ORM\OneToMany(targetEntity="Category", mappedBy="parent")     */    protected $children;    /**     * @ORM\ManyToOne(targetEntity="Category", inversedBy="children")     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id")     * @ORM\Column(nullable=true)     */    protected $parent;    /**     * @ORM\ManyToMany(targetEntity="Store", mappedBy="categories")     */    protected $stores;    /**     * @ORM\Column(type="string", length=255)     */    protected $name;    /**     * @ORM\Column(type="string", length=255, name="url_string", unique=true)     */    protected $urlString;    public function __construct()    {        $this->stores = new \Doctrine\Commmon\Collections\ArrayCollection();    }}Creating Tables : php app/console doctrine:schema:createCreating Getters & Settersphp app/console doctrine:generate:entities ASFStoreBundle
 14. Test the module
add to the routing the storeAction:
vi src/ASF/StoreBundle/Resources/config/routing.yml
asf_mystore:
pattern: /store/{store}
defaults: { _controller: ASFStoreBundle:Store:store }
asf_mystore_index:
pattern: /store/
defaults: { _controller: ASFStoreBundle:Store:index }
vi src/ASF/StoreBundle/Controller/StoreController.php
<?php
//ASF/StoreBundle/Controller/StoreController.php
namespace ASF\StoreBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
class StoreController extends Controller
{
/**
* @Template()
*/
public function indexAction()
{
$em = $this->get('doctrine.orm.entity_manager');
$stores = $em->createQuery('SELECT count(s.id) AS total FROM ASF\StoreBundle\Entity\Store s')->getSingleScalarResult();
return array('stores' => $stores);
}
/**
* @Template()
*/
public function storeAction($store)
{
return array('store' => $store);
}
}
vi src/ASF/StoreBundle/Resources/views/Store/index.html.twig
vi src/ASF/StoreBundle/Resources/views/Store/store.html.twig
add to the routing the storeAction:
vi src/ASF/StoreBundle/Resources/config/routing.yml
asf_mystore:
pattern: /store/{store}
defaults: { _controller: ASFStoreBundle:Store:store }
asf_mystore_index:
pattern: /store/
defaults: { _controller: ASFStoreBundle:Store:index }
vi src/ASF/StoreBundle/Controller/StoreController.php
<?php
//ASF/StoreBundle/Controller/StoreController.php
namespace ASF\StoreBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
class StoreController extends Controller
{
/**
* @Template()
*/
public function indexAction()
{
$em = $this->get('doctrine.orm.entity_manager');
$stores = $em->createQuery('SELECT count(s.id) AS total FROM ASF\StoreBundle\Entity\Store s')->getSingleScalarResult();
return array('stores' => $stores);
}
/**
* @Template()
*/
public function storeAction($store)
{
return array('store' => $store);
}
}
vi src/ASF/StoreBundle/Resources/views/Store/index.html.twig
<!-- Montes/AdictosBundle/Resources/views/Store/index.html.twig -->We have a total of {{ stores }} stores.vi src/ASF/StoreBundle/Resources/views/Store/store.html.twig
<!-- Montes/AdictosBundle/Resources/views/Store/store.html.twig -->So you want store "{{ store }}"?   
No comments:
Post a Comment