Symfony 2.3 Wstęp do
-
Upload
blazej-adamczyk -
Category
Education
-
view
1.150 -
download
0
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