Symfony 2.3 Wstęp do

download Symfony 2.3 Wstęp do

If you can't read please download the document

Transcript of Symfony 2.3 Wstęp do

Wstp do

Budowa Symfony

Struktura HMVC

Aplikacja jako zestaw klockw (Bundle)

Podstawy HTTP jako wzr komunikacji z aplikacj
Request Controller Response

Przestrzenie nazw:
Tribal/NewsletterBundle

Struktura HMVC

Aplikacja jako zestaw moduw

The Symfony Application Flow

Przestrzenie nazw

namespace Etude\PagesBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
class PageController extends Controller {}

ZAMIAST

require_once(BASE_DIR.vendor/Symfony/Component/.../Request.php);

Pozwala uywa tej samej nazwy klasy w obrbie rnych przestrzeni nazw:

use Symfony\Component\HttpFoundation\Request;
use Etude\PagesBundle\Core\Request as PageRequest;

Dependency Injection

public SomeClass (MyClass $myObject) {
$this->myObject = $myObject;
}

ZAMIAST

public SomeClass() {
$myObject = new MyClass();
$myObject->param1 = value1
}

Architektura Bundlea

Struktura folderw

Controller i Routing

View i Twig

Model i Doctrine

Struktura folderw

Controller

DependencyInjection

Entity

Form

Resourcesconfig

public

views

Tests

Controller

namespace Etude\PagesBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller{ public function indexAction() { return new Response('Index', 200, array('Content-Type' => 'text/plain')); }

public function viewAction($uri) { return $this->render('EtudePagesBundle:Default:index.html.twig', array('name' => $uri)); }}

Routing

YMLpages_show:
pattern: /show/{id}
defaults: { _controller: "EtudePagesBundle:Page:show" }

Annotations/**
* @Route("/hello/{name}", name="_demo_hello")
* @Template()
*/
public function helloAction($name)
{
return array('name' => $name);
}

Routing

Pozostae: XML, PHP

YML:
+ deklaracja w jednym miejscu
+ dobre rozwizanie dla internacjonalizacji
- wymaga minimalnie wicej czasu

Anotacje
+ w tym samym miejscu co kontroler
+ piszesz adres zaraz obok metody
- potrzeba ingerencji w kontroler w celu zmiany adresu
- i tak musisz poda definicj w pliku yml

Views i Twig

Model i Doctrine

Symfony Workflow

Nowy projekt

Nowy bundle

Nowy model

Update bazy

CRUD

Git Commit

Nowy projekt

Pobierz composer
curl -sS https://getcomposer.org/installer | php

Stwrz projekt
composer create-project symfony/framework-standard-edition Symfony

Nowy bundle

php app/console generate:bundle --namespace=Tribal/HelloWorldBundle

Nowy model

php app/console doctrine:generate:entity

Wygeneruj setters/getter

(opcjonalnie dla wasnego modelu)

php app/console doctrine:generate:entities

Stwrz baz

php app/console doctrine:database:create

Stwrz tabele

php app/console doctrine:schema:update --force

Wygeneruj controller

php app/console doctrine:generate:crud

Lub formularz

php app/console doctrine:generate:form

Symfony Best Practices

Commituj tylko swj kod (ignoruj gotowe biblioteki)

1 bundle = 1 zadanie

Dont Repeat Yourself

YML for routing, Annotations for Doctrine

Uywaj FormType do generowania formularzy

Pisz testy dla swoich pakietw

Dalsza lektura

Symfony The Book
http://symfony.com/doc/current/book/index.html

Symfony Blog Tutorial
http://tutorial.symblog.co.uk/

Symfony Job List Tutorial
http://www.intelligentbee.com/blog/tag/symfony2-jobeet/

KNP Univeristy Video Tutorials
https://knpuniversity.com/

Symfony 2 Cheat Sheet
http://www.symfony2cheatsheet.com/

Teraz moecie zakuwa