symfony 2.3 wstęp do

Download Symfony 2.3 Wstęp do

If you can't read please download the document

Upload: blazej-adamczyk

Post on 16-Apr-2017

1.150 views

Category:

Education


0 download

TRANSCRIPT

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