Laravel. Tworzenie aplikacji. Receptury 978-83-283-0305-8 [PDF]

Najlepsze przepisy na aplikacje w Laravel! Laravel to szkielet aplikacji dla języka PHP. W ostatnim czasie podbija on

133 1 3MB

Polish Pages 265 Year 2015

Report DMCA / Copyright

DOWNLOAD PDF FILE

Table of contents :
O autorze (7)
O recenzentach (8)
Wstęp (9)
Rozdział 1. Instalowanie Laravela (13)
Wprowadzenie (13)
Instalowanie Laravela w postaci modułu zależnego repozytorium git (14)
Konfigurowanie hostów wirtualnych i środowiska deweloperskiego na serwerze Apache (15)
Tworzenie "czystych" adresów URL (17)
Konfigurowanie Laravela (18)
Praca z Laravelem w edytorze Sublime Text 2 (19)
Konfigurowanie środowiska IDE pozwalające włączyć autouzupełnianie przestrzeni nazw dla Laravela (21)
Wykorzystywanie mechanizmu autoloadera do mapowania pomiędzy nazwą klasy a plikiem z jej definicją (24)
Tworzenie zaawansowanych autoloaderów z przestrzeniami nazw i katalogami (25)
Rozdział 2. Pobieranie danych wejściowych (29)
Wprowadzenie (29)
Tworzenie prostego formularza (30)
Pobieranie danych z formularza i wyświetlenie ich na innej stronie (31)
Walidacja danych wysłanych przez użytkownika (33)
Tworzenie mechanizmu przesyłania plików (35)
Walidacja przesyłanych plików (37)
Tworzenie własnego komunikatu o błędzie (39)
Dodawanie "wabika" do formularza (42)
Przesyłanie obrazów za pomocą biblioteki Redactor (44)
Przycinanie obrazu za pomocą biblioteki Jcrop (47)
Tworzenie pola tekstowego z autouzupełnianiem (50)
Tworzenie mechanizmu przechwytywania spamu w stylu CAPTCHA (53)
Rozdział 3. Uwierzytelnianie w Twojej aplikacji (57)
Wprowadzenie (57)
Instalowanie i konfigurowanie biblioteki Auth (58)
Tworzenie systemu uwierzytelniania (60)
Pobieranie i aktualizowanie danych o użytkowniku po zalogowaniu (64)
Ograniczanie dostępu do wybranych stron (67)
Konfigurowanie uwierzytelniania OAuth z użyciem pakietu HybridAuth (69)
Wykorzystywanie OpenID do logowania (70)
Logowanie z poświadczeniami Facebooka (72)
Logowanie z poświadczeniami Twittera (74)
Logowanie z poświadczeniami LinkedIn (76)
Rozdział 4. Przechowywanie i wykorzystywanie danych (79)
Wprowadzenie (80)
Tworzenie tabel w bazie danych z zastosowaniem migracji i schematów (80)
Tworzenie zapytań w języku SQL (83)
Tworzenie zapytań z użyciem konstruktora Fluent (85)
Tworzenie zapytań z wykorzystaniem systemu ORM Eloquent (88)
Automatyczna walidacja w modelach (90)
Relacje i zaawansowane funkcje systemu Eloquent (93)
Tworzenie systemu CRUD (95)
Importowanie plików CSV za pomocą systemu Eloquent (99)
Kanały RSS jako źródła danych (101)
Atrybuty do zmiany nazw kolumn w tabeli (102)
Zastąpienie systemu Eloquent innym systemem ORM (105)
Rozdział 5. Wykorzystywanie kontrolerów i routingu do obsługi adresów URL i tworzenia API (109)
Wprowadzenie (110)
Tworzenie prostych kontrolerów (110)
Tworzenie routingu z wykorzystaniem domknięcia (111)
Tworzenie kontrolera REST-owego (112)
Zaawansowane opcje routingu (113)
Filtry w routingu (115)
Grupy reguł routingu (116)
Tworzenie REST-owego API z wykorzystaniem routingu (118)
Nazwany routing (124)
Nazwa subdomeny w routingu (125)
Rozdział 6. Wyświetlanie widoków (129)
Wprowadzenie (129)
Tworzenie i wykorzystywanie prostego widoku (130)
Przekazywanie danych do widoku (131)
Wczytywanie widoku do innego (zagnieżdżonego) widoku (133)
Dodawanie zasobów (136)
Tworzenie widoków z zastosowaniem systemu szablonów Blade (138)
System szablonów Twig (140)
Zaawansowane możliwości systemu Blade (142)
Tworzenie zlokalizowanej zawartości (145)
Tworzenie menu w Laravelu (148)
Integracja z Bootstrapem (151)
Nazwane widoki i kompozytory widoków (153)
Rozdział 7. Tworzenie i wykorzystywanie pakietów Composera (157)
Wprowadzenie (157)
Pobieranie i instalowanie pakietów (158)
Pakiet Generators do tworzenia szkieletu aplikacji (161)
Tworzenie pakietu Composera w Laravelu (165)
Dodawanie pakietów Composera do Packagista (169)
Dodawanie pakietu spoza Packagista do Composera (171)
Tworzenie własnego polecenia dla Artisana (173)
Rozdział 8. Ajax i jQuery (177)
Wprowadzenie (177)
Pobieranie danych z innej strony (178)
Konfigurowanie kontrolera tak, aby zwracał dane w formacie JSON (181)
Tworzenie funkcji wyszukiwania z wykorzystaniem techniki Ajax (183)
Tworzenie i walidowanie użytkownika z wykorzystaniem techniki Ajax (185)
Filtrowanie danych na podstawie pól wyboru (188)
Tworzenie okna rejestracji do newslettera z użyciem techniki Ajax (191)
Wysyłanie wiadomości e-mail z zastosowaniem Laravela i biblioteki jQuery (194)
Tworzenie tabeli z możliwością sortowania przy użyciu Laravela i biblioteki jQuery (197)
Rozdział 9. Efektywne wykorzystywanie mechanizmów bezpieczeństwa i sesji (201)
Wprowadzenie (201)
Szyfrowanie i odszyfrowywanie danych (202)
Hashowanie haseł i innych danych (205)
Tokeny CSRF i filtry w formularzach (208)
Zaawansowana walidacja w formularzach (210)
Tworzenie koszyka zakupowego (213)
Wykorzystywanie Redisa do przechowywania sesji (216)
Podstawowe zastosowanie sesji i ciasteczek (218)
Tworzenie bezpiecznego serwera API (221)
Rozdział 10. Testowanie i debugowanie aplikacji (225)
Wprowadzenie (225)
Instalowanie i konfigurowanie biblioteki PHPUnit (226)
Tworzenie i uruchamianie testów (227)
Wykorzystywanie biblioteki Mockery do testowania kontrolerów (228)
Pisanie testów akceptacyjnych z użyciem biblioteki Codeception (231)
Debugowanie i profilowanie aplikacji (233)
Rozdział 11. Wdrażanie i integrowanie aplikacji z usługami firm trzecich (237)
Wprowadzenie (237)
Tworzenie kolejek i wykorzystywanie Artisana do ich uruchamiania (238)
Wdrażanie aplikacji Laravela na platformę Pagoda Box (240)
Używanie bramki płatności Stripe z frameworkiem Laravel (244)
Przeszukiwanie bazy GeoIP i konfiguracja własnego routingu (247)
Gromadzenie adresów e-mail i ich wykorzystywanie w usługach pocztowych firm trzecich (248)
Przechowywanie i pobieranie zawartości zapisanej w chmurze Amazon S3 (251)
Skorowidz (255)
Papiere empfehlen

Laravel. Tworzenie aplikacji. Receptury
 978-83-283-0305-8 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Tytuł oryginału: Laravel Application Development Cookbook Tłumaczenie: Mirosław Gołda ISBN: 978-83-283-0305-8 Copyright © Packt Publishing 2013. First published in the English language under the title: „Laravel Application Development Cookbook”. Polish edition copyright © 2015 by Helion S.A. All rights reserved. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: [email protected] WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/larare_ebook Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.   

Poleć książkę na Facebook.com Kup w wersji papierowej Oceń książkę

 

Księgarnia internetowa Lubię to! » Nasza społeczność

Spis treści O autorze

7

O recenzentach

8

Wstęp

9

Rozdział 1. Instalowanie Laravela Wprowadzenie Instalowanie Laravela w postaci modułu zależnego repozytorium git Konfigurowanie hostów wirtualnych i środowiska deweloperskiego na serwerze Apache Tworzenie „czystych” adresów URL Konfigurowanie Laravela Praca z Laravelem w edytorze Sublime Text 2 Konfigurowanie środowiska IDE pozwalające włączyć autouzupełnianie przestrzeni nazw dla Laravela Wykorzystywanie mechanizmu autoloadera do mapowania pomiędzy nazwą klasy a plikiem z jej definicją Tworzenie zaawansowanych autoloaderów z przestrzeniami nazw i katalogami

Rozdział 2. Pobieranie danych wejściowych Wprowadzenie Tworzenie prostego formularza Pobieranie danych z formularza i wyświetlenie ich na innej stronie Walidacja danych wysłanych przez użytkownika Tworzenie mechanizmu przesyłania plików Walidacja przesyłanych plików Tworzenie własnego komunikatu o błędzie Dodawanie „wabika” do formularza Przesyłanie obrazów za pomocą biblioteki Redactor Przycinanie obrazu za pomocą biblioteki Jcrop Tworzenie pola tekstowego z autouzupełnianiem Tworzenie mechanizmu przechwytywania spamu w stylu CAPTCHA

13 13 14 15 17 18 19 21 24 25

29 29 30 31 33 35 37 39 42 44 47 50 53

Spis treści

Rozdział 3. Uwierzytelnianie w Twojej aplikacji Wprowadzenie Instalowanie i konfigurowanie biblioteki Auth Tworzenie systemu uwierzytelniania Pobieranie i aktualizowanie danych o użytkowniku po zalogowaniu Ograniczanie dostępu do wybranych stron Konfigurowanie uwierzytelniania OAuth z użyciem pakietu HybridAuth Wykorzystywanie OpenID do logowania Logowanie z poświadczeniami Facebooka Logowanie z poświadczeniami Twittera Logowanie z poświadczeniami LinkedIn

Rozdział 4. Przechowywanie i wykorzystywanie danych Wprowadzenie Tworzenie tabel w bazie danych z zastosowaniem migracji i schematów Tworzenie zapytań w języku SQL Tworzenie zapytań z użyciem konstruktora Fluent Tworzenie zapytań z wykorzystaniem systemu ORM Eloquent Automatyczna walidacja w modelach Relacje i zaawansowane funkcje systemu Eloquent Tworzenie systemu CRUD Importowanie plików CSV za pomocą systemu Eloquent Kanały RSS jako źródła danych Atrybuty do zmiany nazw kolumn w tabeli Zastąpienie systemu Eloquent innym systemem ORM

57 57 58 60 64 67 69 70 72 74 76

79 80 80 83 85 88 90 93 95 99 101 102 105

Rozdział 5. Wykorzystywanie kontrolerów i routingu do obsługi adresów URL i tworzenia API

109

Wprowadzenie Tworzenie prostych kontrolerów Tworzenie routingu z wykorzystaniem domknięcia Tworzenie kontrolera REST-owego Zaawansowane opcje routingu Filtry w routingu Grupy reguł routingu Tworzenie REST-owego API z wykorzystaniem routingu Nazwany routing Nazwa subdomeny w routingu

110 110 111 112 113 115 116 118 124 125

Rozdział 6. Wyświetlanie widoków Wprowadzenie Tworzenie i wykorzystywanie prostego widoku Przekazywanie danych do widoku Wczytywanie widoku do innego (zagnieżdżonego) widoku Dodawanie zasobów

4

129 129 130 131 133 136

Spis treści

Tworzenie widoków z zastosowaniem systemu szablonów Blade System szablonów Twig Zaawansowane możliwości systemu Blade Tworzenie zlokalizowanej zawartości Tworzenie menu w Laravelu Integracja z Bootstrapem Nazwane widoki i kompozytory widoków

138 140 142 145 148 151 153

Rozdział 7. Tworzenie i wykorzystywanie pakietów Composera

157

Wprowadzenie Pobieranie i instalowanie pakietów Pakiet Generators do tworzenia szkieletu aplikacji Tworzenie pakietu Composera w Laravelu Dodawanie pakietów Composera do Packagista Dodawanie pakietu spoza Packagista do Composera Tworzenie własnego polecenia dla Artisana

Rozdział 8. Ajax i jQuery

157 158 161 165 169 171 173

177

Wprowadzenie Pobieranie danych z innej strony Konfigurowanie kontrolera tak, aby zwracał dane w formacie JSON Tworzenie funkcji wyszukiwania z wykorzystaniem techniki Ajax Tworzenie i walidowanie użytkownika z wykorzystaniem techniki Ajax Filtrowanie danych na podstawie pól wyboru Tworzenie okna rejestracji do newslettera z użyciem techniki Ajax Wysyłanie wiadomości e-mail z zastosowaniem Laravela i biblioteki jQuery Tworzenie tabeli z możliwością sortowania przy użyciu Laravela i biblioteki jQuery

177 178 181 183 185 188 191 194 197

Rozdział 9. Efektywne wykorzystywanie mechanizmów bezpieczeństwa i sesji

201

Wprowadzenie Szyfrowanie i odszyfrowywanie danych Hashowanie haseł i innych danych Tokeny CSRF i filtry w formularzach Zaawansowana walidacja w formularzach Tworzenie koszyka zakupowego Wykorzystywanie Redisa do przechowywania sesji Podstawowe zastosowanie sesji i ciasteczek Tworzenie bezpiecznego serwera API

Rozdział 10. Testowanie i debugowanie aplikacji Wprowadzenie Instalowanie i konfigurowanie biblioteki PHPUnit Tworzenie i uruchamianie testów Wykorzystywanie biblioteki Mockery do testowania kontrolerów Pisanie testów akceptacyjnych z użyciem biblioteki Codeception Debugowanie i profilowanie aplikacji

201 202 205 208 210 213 216 218 221

225 225 226 227 228 231 233

5

Spis treści

Rozdział 11. Wdrażanie i integrowanie aplikacji z usługami firm trzecich Wprowadzenie Tworzenie kolejek i wykorzystywanie Artisana do ich uruchamiania Wdrażanie aplikacji Laravela na platformę Pagoda Box Używanie bramki płatności Stripe z frameworkiem Laravel Przeszukiwanie bazy GeoIP i konfiguracja własnego routingu Gromadzenie adresów e-mail i ich wykorzystywanie w usługach pocztowych firm trzecich Przechowywanie i pobieranie zawartości zapisanej w chmurze Amazon S3

Skorowidz

6

237 237 238 240 244 247 248 251

255

O autorze Terry Matula jest webdeveloperem i popularyzatorem Laravela mieszkającym w Austin, w stanie Teksas. Pasjonuje się komputerami od momentu, gdy po raz pierwszy zagrał w grę Oregon Trail na komputerze Apple //e. Swoją przygodę z programowaniem rozpoczął wcześnie, od języka BASIC, w którym przygotowywał na komputerze Commodore Vic-20 gry podobne to tych, które tworzył Scott Adams. Pracował jako programista Flash, ActionScript, ASP.NET i PHP; korzystał z wielu frameworków, z których najbardziej polubił właśnie Laravela. Na swoim blogu dostępnym pod adresem http://terrymatula.com zamieszcza porady i rozwiązania różnych problemów dotyczących programowania aplikacji internetowych. Chciałbym podziękować Taylorowi Otwellowi za stworzenie tak wspaniałego frameworka, jak również członkom społeczności Laravela, oferującym najlepszą pomoc spośród wszystkich znanych mi środowisk webdeveloperskich. Chciałbym też podziękować mojej pięknej żonie Michelle za nieustanne wsparcie i zachęcanie mnie do dalszej pracy nawet wtedy, gdy pracowałem 18 godzin dziennie, żeby ukończyć tę książkę. Na koniec chciałbym podziękować mojemu synowi Evanowi za rozświetlenie mojego życia i nadanie mu głębszego sensu.

O recenzentach Jason Lewis jest webdeveloperem i designerem z Australii. Programowaniem w obrębie technologii webowych zajmuje się od 7 lat i należy do grona wielkich propagatorów Laravela. W ciągu dnia Jason pracuje jako strażak, a w nocy zajmuje się kodowaniem. Jest zawsze chętny do pomocy i uwielbia pisać artykuły wspomagające innych w nauce programowania. Elan Marikit jest inżynierem oprogramowania pracującym w obrębie takich technologii, jak PHP, JavaScript, MySQL, Linux i FreeBSD. Elan posiada bogate doświadczenie w tworzeniu zaawansowanych aplikacji internetowych z wykorzystaniem frameworków MVC, takich jak CodeIgniter i Laravel. Posiada tytuł Zend Certified Engineer dla PHP w wersji 5.3, a aktualnie pracuje w start-upie z Singapuru zajmującym się tworzeniem skalowalnych portali o tematyce podróżniczej, w szczególności dotyczących południowo-wschodniej Azji.

Wstęp � k\.� � ��)r

Laravel to jeden z najszybciej rozwijających się framewor

����

syjna składnia i znakomita dokumentacja pozwalają szyb aplikację. Dodatkowo wykorzystanie nowoczesnych f łatwe przystosowanie 4. wersji Laravela do naszy h tworzenie stron o wysokim stopniu skarnplikowa · użycia i zaawansowanych możliwości.

j

H

historii. Jego ekspre­

zyć w pełni funkcjonalną

lności języka PHP umożliwia

�D, jak również,

gdy to konieczne,

st to doskonałe połączenie prostoty

o @

Książka ta opisuje jedynie ułamek możliwośc

avela. Można ją jednak traktować jako punkt

�a szybkie rozpoczęcie pracy. Dostępne przykłady można dowolnie przystosować, uzupe� � asny kod lub łączyć ze sobą, aby stworzyć własną aplikację. Możliwości są nieogra:�one. Jednym z największych a ut'�av: la jest jego społeczność. Jeśli napotkasz jakiś problem wyjścia, a podane przykłady kodu pozw

� �

i nie znajdziesz jego roz

ia w wyszukiwarce Google, zawsze możesz liczyć na pomoc

członków społeczn śc·. NaJ

#laravel na serwer

twiej skontaktować się z nimi za pośrednictwem IRC (kanał

node) lub poprzez forum (http://forums.laravel.io). Wielu użytkow­

ników Laravela jest też ostępnych na Twitterze. Miłego laravelowania!

Co zawiera książka? Rozdział 1., "Instalowanie Laravela'', omawia różne sposoby rozpoczęcia pracy z Laravelem. " Rozdział 2., "Pobieranie danych wejściowych , pokazuje wiele sposobów pracy z formularza­ mi w Laravelu. Omawia wykorzystanie klasy formularza, jak również przeprowadzenie pod­ stawowej walidacji danych.



Laravel. Tworzenie aplikacji. Receptury

" Rozdział 3., " Twoja aplikacja , opisuje uwierzytelnianie użytkowników. Dowiemy się, jak korzystać z uwierzytelniania za pośrednictwem OAuth, Openld oraz różnych sieci społecz­ nościowych. Rozdział 4., "Przechowywanie i wykorzystywanie danych'', omawia wszystkie tematy związane z danymi, wliczając w to użycie źródeł danych innych niż baza MySQL. " Rozdział 5., "Wykorzystywanie kontrolerów i routingu do obsługi adresów URL i tworzenia API , opisuje wiele metod konfigurowania routingu w Laravelu oraz przygotowywania prostego API. " Rozdział 6. , ,,Wyświetlanie widoków , omawia działanie widoków w Laravelu. Zintegrujemy również z Laravelem system szablonów Twig oraz framework Twitter Bootstrap.

�je metody używania """""

Rozdział 7., "Tworzenie i wykorzystywanie pakietów Composera'', op pakietów w aplikacji oraz tworzenia własnego pakietu.

� � �� ,t_�

" Rozdział 8., "Ajax i jQuery , opisuje różne przykłady pracy z i wywołaniami asynchronicznymi.

� li

jQuery w Laravelu

• " ieczełlstwa i sesji , zawiera

Rozdział 9., "Efektywne wykorzystywanie mechanizm tematy dotyczące zabezpieczania aplikacji oraz s

racy z sesją i ciasteczkami.

c�Va � e

Rozdział 10., "Testowanie i clebugawanie aplikacji,�> w aplikacji z wykorzystaniem frameworków P

" cji z usługami firm trzecich , opisuje wykorzy­

Rozdział 11., "Wdrażanie i integrowanie stanie w aplikacji kilku usług zewnętrz

wia pracę z testami jednostkowymi

t oraz Codeception.

.

�-

�� ����!� i!!��� �::: z

,

ą

cgo oprogramowania TAMP (Linnx,

Apache, MySQL i PHP). Jako serwer internetowy posłuży nam Apache 2, dostępny do pobrania pod adresem

http://httpd.apache.org. Zalecanym serwerem bazy danych jest MySQL 5.6, do­ http://dev.mysql.com/downloads!mysql. Zalecaną wersją PHP jest wersja 5.4 lub wyższa, dostępna pod adresem http://php.net/downloads.php.

stępny do pobrania pod adresem

Osoby szukające kompleksowego rozwiązania mogą być zainteresowane serwerami WAMP

(http://www.wampserver.com/en) lub XAMMP (http://www.apachefriends.org/en/xampp.html), przeznaczonymi dla systemu Windows, oraz MAMP (http://www.mamp.info/en/mamp-pro), dostępnym dla systemu Mac OS X.

10

Wstęp

Dla kogo przeznaczona jest ta książka? Książka przeznaczona jest dla osób o średnio zaawansowanej znajomości języka PHP. Przydatna może być znajomość podstaw innego frameworka PHP lub Laravela w wersji 3., podobnie jak podstawowa znajomość wzorca MVC i programowania obiektowego.

Konwencje W książce zastosowano kilka stylów tekstu wyróżniających informacje danego typu. Poniżej znajdziesz przykłady stylów wraz z wyjaśnieniem ich znaczenia. Zamieszczone w tekście fragmenty kodu, nazwy tabel, folderów i plików, rozszerzenia plików, ścieżki, adresy URL, dane wejściowe oraz nazwy kont, oznaczone są w następujący sposób: „Za pomocą polecenia artisan generujemy nowy klucz, który jest automatycznie zapisywany do właściwego pliku”. Blok kodu oznaczany jest tak: Route::get('accounts', function() { $accounts = Account::all(); return View::make('accounts')->with('accounts', $accounts); });

Dowolne wejście lub wyjście linii poleceń zapisywane jest następująco: php artisan key:generate

Nowe pojęcia i ważne słowa są pogrubiane. Słowa widoczne np. na ekranie, w menu lub oknach dialogowych wyróżniane są w tekście w sposób następujący: „Po zalogowaniu do serwisu Pagoda Box kliknij kartę New Application (nowa aplikacja)”. Ostrzeżenia, ważne komunikaty, porady i wskazówki pojawiają się w takich ramkach.

Pobieranie kodu przykładów Pliki z przykładami kodu można pobrać ze strony wydawnictwa Helion pod adresem ftp://ftp.helion.pl/przyklady/larare.zip.

11

Laravel. Tworzenie aplikacji. Receptury

12

1 Instalowanie Laravela W tym rozdziale omówimy:  Instalowanie Laravela w postaci modułu zależnego repozytorium git  Konfigurowanie hostów wirtualnych i środowiska deweloperskiego na serwerze

Apache  Tworzenie „czystych” adresów URL  Konfigurowanie Laravela  Praca z Laravelem w edytorze Sublime Text 2  Konfigurowanie środowiska IDE, pozwalające włączyć autouzupełnianie

przestrzeni nazw dla Laravela  Wykorzystywanie autoloadera do mapowania nazw klas i plików z ich definicją  Tworzenie zaawansowanych autoloaderów z wykorzystaniem przestrzeni nazw

i katalogów

Wprowadzenie W tym rozdziale dowiemy się, jak w prosty sposób zainstalować i skonfigurować Laravela oraz umożliwić jego bezproblemową aktualizację po pojawieniu się nowej wersji frameworka. Skonfigurujemy również nasze środowisko deweloperskie i narzędzia programistyczne, aby wydajnie pracować, tworzyć wspaniały kod i nie zajmować się problemami niezwiązanymi bezpośrednio z naszą aplikacją. Na koniec poznamy sposoby zautomatyzowania części naszej pracy z Laravelem, co umożliwi nam szybką rozbudowę naszej aplikacji.

Laravel. Tworzenie aplikacji. Receptury

Instalowanie Laravela w postaci modułu zależnego repozytorium git W niektórych projektach może zaistnieć potrzeba oddzielenia plików frameworka Laravel od plików znajdujących się w katalogu publicznym. W takim przypadku rozwiązaniem może być zainstalowanie Laravela w postaci modułu zależnego repozytorium git. Umożliwi to późniejsze zaktualizowanie plików Laravela bez ingerencji w kod aplikacji.

Przygotowanie Do rozpoczęcia pracy potrzebny jest nam działający serwer deweloperski oraz zainstalowany klient systemu kontroli wersji git. W katalogu publicznym serwera utwórz katalog myapp, w którym umieścimy pliki aplikacji. Cały proces instalacji przeprowadzimy z wykorzystaniem linii poleceń.

Jak to zrobić… Aby wykonać kroki tej receptury, postępuj zgodnie z poniższymi wskazówkami: 1. W oknie terminalu lub linii poleceń przejdź do głównego katalogu projektu myapp. Pierwszą czynnością jest inicjalizacja repozytorium git i pobranie plików projektu: $ git init $ git clone https://github/laravel/laravel.git

2. Potrzebny jest nam tylko katalog public, przejdź do katalogu laravel i usuń pozostałe katalogi i pliki: $ cd laravel $ rm –r app bootstrap

3. Następnie wróć do katalogu głównego, utwórz katalog framework i dodaj Laravela jako moduł zależny: $ $ $ $ $

cd .. mkdir framework cd framework git init git submodule add https://github.com/laravel/laravel.git

4. Wejdź do katalogu laravel i zainstaluj framework za pomocą narzędzia Composer: php composer.phar install Informacje o tym, jak zainstalować narzędzie Composer, dostępne są pod adresem http://getcomposer. org/doc/00-intro.md. W książce korzystamy z pliku composer.phar; Composer można jednak zainstalować globalnie i uruchamiać go za pomocą polecenia composer.

14

Rozdział 1. • Instalowanie Laravela

5. Następnie otwórz plik /laravel/public/index.php i wyszukaj następujące linie kodu: require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/start.php';

6. Znalezione linie zmień następująco: require __DIR__.'/../../framework/laravel/bootstrap/ autoload.php'; $app = require_once __DIR__.'/../../framework/laravel/ bootstrap/start.php';

Jak to działa… Aby utworzyć nowy projekt, w wielu przypadkach wystarczy wykonać polecenie git clone. Założyliśmy jednak, że framework ma funkcjonować jako moduł zależny, musimy więc oddzielić pliki Laravela od naszego projektu. Na początek pobieramy pliki z serwisu GitHub, a ponieważ nie są nam potrzebne żadne pliki frameworka, usuwamy wszystko poza folderem public. Następnie tworzymy moduł zależny w katalogu framework i pobieramy do niego pliki frameworka. Po zakończeniu uruchamiamy polecenie composer install, aby zainstalować pakiety innych dostawców (ang. vendor). Aby podłączyć framework do aplikacji, modyfikujemy plik /laravel/public/index.php i zmieniamy ścieżkę wskazującą na katalog frameworka. Dzięki tej zmianie nasza aplikacja wie, gdzie dokładnie zlokalizowane są pliki frameworka.

To nie wszystko… Jednym z alternatywnych rozwiązań jest przeniesienie katalogu public do głównego katalogu serwera. Następnie aktualizujemy plik index.php i wykorzystujemy ścieżkę __DIR__ . '/../framework/laravel/bootstrap' do poprawnego wczytania plików frameworka.

Konfigurowanie hostów wirtualnych i środowiska deweloperskiego na serwerze Apache Do tworzenia aplikacji z użyciem Laravela niezbędne jest środowisko uruchomieniowe w postaci serwera HTTP. Osoby korzystające z interpretera PHP w wersji 5.4 lub nowszej mogą użyć wbudowanego serwera deweloperskiego. Jeśli potrzebna jest nam jednak dodatkowa funkcjonalność, musimy skorzystać z pełnego pakietu oprogramowania internetowego. W tej recepturze wykorzystamy serwer Apache działający pod kontrolą systemu Windows, dla pozostałych systemów operacyjnych procedura jest jednak bardzo zbliżona.

15

Laravel. Tworzenie aplikacji. Receptury

Przygotowanie W tej recepturze wykorzystamy najnowszą wersję serwera WAMP dostępną pod adresem http://wampserver.com. Podstawowe zasady postępowania w przypadku innych konfiguracji serwera Apache dla systemu Windows są analogiczne.

Jak to zrobić… Aby wykonać kroki tej receptury, postępuj zgodnie z poniższymi wskazówkami: 1. Otwórz plik httpd.conf serwera Apache dla pakietu WAMP. Z reguły znajduje się on w katalogu C:/wamp/bin/apache/Apach2.#.#/conf. 2. Znajdź linię #Include conf/extra/httpd-vhosts.conf i usuń pierwszy znak #. 3. Przejdź do katalogu extra, otwórz plik httpd-vhosts.conf, a następnie dodaj poniższy kod:

ServerAdmin {[email protected]} DocumentRoot "C:/ścieżka/do/katalogu/myapp/public" ServerName myapp.dev

Options Indexes FollowSymLinks AllowOverride all # onlineoffline tag - don't remove Order Deny,Allow Deny from all Allow from 127.0.0.1

4. Uruchom ponownie usługę Apache. 5. Za pomocą edytora tekstu otwórz plik hosts znajdujący się najczęściej w katalogu C:/Windows/System32/drivers/etc. 6. Na samym dole pliku dodaj linię 127.0.0.1

myapp.dev.

Jak to działa… Na początku usuwamy znak komentarza w linii w pliku konfiguracyjnym httpd.conf, aby włączyć obsługę plików konfiguracyjnych wirtualnych hostów. Umieszczanie kodu bezpośrednio w pliku httpd.conf jest wprawdzie możliwe, ale wpływa negatywnie na strukturę pliku konfiguracyjnego. W pliku httpd-vhosts.conf dodajemy kod sekcji VirtualHost. Opcja DocumentRoot pozwala określić lokalizację plików, a ServerName ustawia podstawowy adres URL. Dzięki tym ustawieniom serwer wie, które żądania mają być obsłużone z wykorzystaniem tej sekcji. Serwer ma służyć wyłącznie do celów deweloperskich, umożliwiamy więc dostęp jedynie z adresu IP 127.0.0.1.

16

Rozdział 1. • Instalowanie Laravela

W pliku hosts w systemie Windows określamy docelowy adres IP dla odwołań do serwera myapp.dev. Po ponownym uruchomieniu serwera Apache nasza aplikacja powinna być dostępna pod adresem http://myapp.dev.

To nie wszystko… Chociaż w powyższej recepturze korzystaliśmy z systemu Windows i serwera WAMP, w innych instalacjach serwera Apache procedura powinna być zbliżona. Jedyną różnicą byłaby lokalizacja pliku httpd.conf (w systemie Ubuntu jest to katalog /etc/apache2) oraz ścieżka do katalogu publicznego ustawionego w opcji DocumentRoot (w Ubuntu może być podobna do /var/www/myapp/public). Konfiguracja hostów i adresów IP w systemach Linux oraz Mac OS X znajduje się w pliku /etc/hosts.

Tworzenie „czystych” adresów URL Po zainstalowaniu Laravela domyślnym adresem URL aplikacji jest http://{nazwa-serwera}/public. Możemy zmodyfikować adres URL i usunąć z niego katalog /public za pomocą modułu mod_rewrite serwera Apache.

Przygotowanie W tej recepturze wykorzystamy nową instalację Laravela działającą pod kontrolą poprawnie skonfigurowanego serwera Apache.

Jak to zrobić… Aby wykonać kroki tej receptury, postępuj zgodnie z poniższymi wskazówkami: 1. W głównym katalogu aplikacji dodaj plik .htaccess o następującej zawartości:

RewriteEngine On RewriteRule ^(.*)$ public/$1 [L]

2. Po wykonaniu tej zmiany aplikacja jest dostępna pod adresem http://{nazwa-serwera}.

Jak to działa… Ten prosty fragment kodu powoduje doklejenie wartości adresu URL do katalogu public. Dzięki temu nie jest już konieczne ręczne wpisywanie /public do adresu.

17

Laravel. Tworzenie aplikacji. Receptury

To nie wszystko… Opisana powyżej metoda nie jest najlepszym możliwym rozwiązaniem wdrażania aplikacji w środowisku produkcyjnym. W takim przypadku przenosimy po prostu pliki naszej aplikacji poza katalog główny i jako katalog główny ustawiamy folder /public.

Konfigurowanie Laravela Po zainstalowaniu Laravela jesteśmy już niemal gotowi do rozpoczęcia pracy. Zanim to jednak nastąpi, musimy dokonać drobnych zmian w konfiguracji i zmienić kilka ustawień.

Przygotowanie W tej recepturze wykorzystamy standardową instalację Laravela.

Jak to zrobić… Aby wykonać kroki tej receptury, postępuj zgodnie z poniższymi wskazówkami: 1. Otwórz plik /app/config/app.php i zmień poniższe linie: 'url' => 'http://localhost/, 'locale' => 'pl', 'key' => 'Poważnie-UstawInnyKlucz',

2. Otwórz plik app/config/database.php i wybierz preferowaną bazę danych: 'default' => 'mysql', 'connections' => array( 'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'database', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), ),

3. W linii poleceń przejdź do katalogu app i upewnij się, że posiadasz prawa zapisu do katalogu storage: chmod –R 777 app/storage

18

Rozdział 1. • Instalowanie Laravela

Jak to działa… Większość ustawień konfiguracyjnych znajduje się w pliku /app/config/app.php. Ustawienie adresu URL nie jest wymagane i Laravel jest go w stanie samodzielnie określić. Zalecane jest jednak odciążenie frameworka od wszelkiej zbytecznej pracy, którą możemy za niego wykonać. W następnym kroku wskazujemy naszą lokalizację. Jeśli chcemy korzystać z obsługi wielu języków, ustawienie to posłuży za język domyślny. Następnie ustawiamy własny klucz aplikacji, gdyż korzystanie z jego domyślnej wartości nie jest wskazane. Konfigurujemy też sterownik bazy danych, z której będziemy korzystać. Laravel udostępnia standardowo cztery sterowniki: mysql, sqlite, sqlsrv (MS SQL Server) oraz pgsql (Postgres). Na koniec przygotowujemy katalog app/storage do przechowywania danych tymczasowych, sesji i plików pamięci podręcznej. W tym celu zapewniamy aplikacji możliwość zapisu do tego katalogu.

To nie wszystko… Prostym sposobem utworzenia bezpiecznego klucza aplikacji jest usunięcie domyślnej wartości i zastąpienie jej pustym ciągiem. Następnie w linii poleceń przechodzimy do katalogu głównego aplikacji i wpisujemy: php artisan key:generate

Spowoduje to utworzenie unikalnego i bezpiecznego klucza oraz zapisanie wygenerowanej wartości w pliku konfiguracyjnym.

Praca z Laravelem w edytorze Sublime Text 2 Jednym z najpopularniejszych edytorów dla programistów jest Sublime Text. Sublime oferuje wiele funkcji, dzięki którym kodowanie staje się przyjemniejsze, oraz rozszerzeń stworzonych specjalnie po to, aby praca z Laravelem stała się jeszcze prostsza.

Przygotowanie Sublime Text 2 jest popularnym edytorem programistycznym, charakteryzującym się dużą rozszerzalnością i prostotą pracy z kodem. Wersja demonstracyjna programu dostępna jest pod adresem http://www.sublimetext.com/2. Musimy też zainstalować i włączyć w Sublime pakiet Package Control, dostępny pod adresem http://wbond.net/sublime_packages/package_control/installation.

19

Laravel. Tworzenie aplikacji. Receptury

Jak to zrobić… W tej recepturze wykonaj następujące czynności: 1. Wybierz w menu kolejno pozycję Preferences, a następnie Package Control:

2. Wybierz opcję Install Package:

20

Rozdział 1. • Instalowanie Laravela

3. Wyszukaj słowo laravel, aby wyświetlić listę wyników. Wybierz z listy pakiet Laravel 4 Snippets i zainstaluj go. Po zakończeniu wybierz pakiet Laravel-Blade i również zainstaluj.

Jak to działa… Szablony kodu Laravela dla edytora Sublime Text 2 upraszczają pisanie często używanych fragmentów kodu i obejmują niemal wszystko, co jest potrzebne do tworzenia aplikacji. Przykładowo, aby utworzyć routing, rozpocznij wpisywanie słowa Route, a pojawi się lista wyboru interesującego nas routingu. Po wybraniu interesującej nas pozycji wprowadzany kod zostanie automatycznie uzupełniony.

To nie wszystko… Zainstalowanie pakietu Laravel-Blade ułatwia pracę z systemem szablonów Blade, dostępnym standardowo z frameworkiem Laravel. Pliki z szablonami są rozpoznawane, a składnia kodu jest podświetlana.

Konfigurowanie środowiska IDE pozwalające włączyć autouzupełnianie przestrzeni nazw dla Laravela Większość środowisk IDE (Integrated Development Environment) oferuje pewną formę uzupełniania tworzonego kodu. Aby uzyskać autouzupełnianie przestrzeni nazw dla frameworka Laravel w środowisku IDE, musimy ułatwić mu rozpoznanie dostępnych przestrzeni.

21

Laravel. Tworzenie aplikacji. Receptury

Przygotowanie W tej recepturze dodamy obsługę przestrzeni nazw do środowiska Netbeans IDE, ale w innych środowiskach scenariusz postępowania jest analogiczny.

Jak to zrobić… Postępuj zgodnie z poniższymi wskazówkami, aby wykonać wszystkie kroki receptury: 1. Pobierz plik zawierający przygotowaną listę przestrzeni nazw dla Laravela: https://gist.github.com/barryvdh/5227822 2. W wybranym miejscu na dysku utwórz folder, w którym zapiszesz plik. W naszym przykładzie zapiszemy plik jako C:/ide_helper/ide_helper.php:

3. Po utworzeniu projektu wybierz kolejno opcje File/Project Properties/ PHP Include Path (patrz pierwszy rysunek na następnej stronie). 4. Kliknij przycisk Add Folder… i dodaj folder C:/ide_helper. 5. Teraz, gdy rozpoczniesz wpisywanie kodu, środowisko IDE automatycznie podpowie pasujące wyrażenia (patrz drugi rysunek na następnej stronie).

22

Rozdział 1. • Instalowanie Laravela

23

Laravel. Tworzenie aplikacji. Receptury

Jak to działa… Niektóre środowiska IDE potrzebują pomocy w zrozumieniu składni frameworka. Aby Netbeans poradził sobie z uzupełnianiem kodu, pobieramy listę klas i opcji dla Laravela. Następnie, po dodaniu pliku w opcji Include Path, Netbeans automatycznie sprawdzi jego zawartość i wyświetli opcje autouzupełniania.

To nie wszystko… Możemy automatycznie pobrać i zaktualizować dokumentację za pomocą narzędzia Composer. Instrukcje instalacji dostępne są pod adresem https://github.com/barryvdh/laravel-ide-helper.

Wykorzystywanie mechanizmu autoloadera do mapowania pomiędzy nazwą klasy a plikiem z jej definicją Mechanizm ClassLoader frameworka Laravel pozwala w prosty sposób dołączyć do kodu naszej aplikacji dowolne biblioteki klas.

Przygotowanie W tej recepturze wykorzystamy standardową instalację Laravela.

Jak to zrobić… Aby wykonać kroki tej receptury, postępuj zgodnie z poniższymi wskazówkami: 1. W katalogu /app utwórz nowy katalog o nazwie custom do przechowywania utworzonych klas. 2. W katalogu custom utwórz plik MyShapes.php o następującej prostej zawartości:





czerwony' => 'czerwony', 'zielony' => 'zielony', 'niebieski' => 'niebieski')) ?>


Wyświetl formularz, przechodząc na stronę http://{nazwa-serwera}/userform (w miejsce {nazwa-serwera} wstaw nazwę swojego serwera).

Jak to działa… W tym zadaniu wykorzystaliśmy klasę Form frameworka Laravel do utworzenia prostego formularza. Umożliwia nam ona tworzenie elementów formularza zgodnych ze standardem W3C (World Wide Web Consortium) z wykorzystaniem minimum kodu.

30

Rozdział 2. • Pobieranie danych wejściowych

Na początek otwieramy formularz. Laravel automatycznie utworzy tag HTML wraz z atrybutami odpowiedzialnymi za akcję, metodę HTTP i parametry accept-charset. Jeśli do metody nie przekażemy żadnych parametrów, domyślną akcją będzie bieżący URL, domyślną metodą będzie POST, a ustawienia akceptowalnego zbioru znaków pobrane zostaną z pliku konfiguracyjnego. Następnie tworzymy standardowe pole tekstowe i pole hasła razem z etykietami. Pierwszym parametrem etykiety jest nazwa pola tekstowego, a drugim tekst, który ma zostać wyświetlony. W generatorze formularzy etykietę należy umieścić przed powiązanym z nią polem. Metoda select formularza wymaga podania drugiego parametru, tablicy wartości dla listy rozwijanej. W tym przykładzie tworzymy tablicę z wykorzystaniem składni 'klucz' => 'wartość'. Do utworzenia grup opcji musimy zastosować tablice zagnieżdżone. Na koniec tworzymy przycisk typu submit i zamykamy formularz.

To nie wszystko… Większość metod formularza w frameworku Laravel przyjmuje również wartości domyślne i parametry dodatkowe (klasy, identyfikatory itp.). Jeśli nie chcemy korzystać z wyspecjalizowanych metod dla pól formularza różnego typu, możemy użyć metody Form::input(). Przykładowo wywołanie Form::input('submit', NULL, 'Send it!') powoduje utworzenie przycisku typu submit.

Zobacz także  Receptura „Pobieranie danych z formularza i wyświetlenie ich na innej stronie”

Pobieranie danych z formularza i wyświetlenie ich na innej stronie Po tym, jak użytkownik zatwierdzi i prześle dane formularza, musimy w jakiś sposób obsłużyć i przekazać je na inną stronę. W tej recepturze dowiemy się, jak za pomocą wbudowanych metod Laravela obsłużyć dane wysłane metodą POST.

Przygotowanie Wykorzystamy prosty formularz utworzony w recepturze „Tworzenie prostego formularza”.

31

Laravel. Tworzenie aplikacji. Receptury

Jak to zrobić… Postępuj zgodnie z poniższymi wskazówkami, aby wykonać wszystkie kroki receptury: 1. Tworzenie routingu do obsługi danych POST wysłanych z formularza: Route::post('userform', function() { // W tym miejscu przetwórz dane. return Redirect::to('userresults')>withInput(Input::only('username', 'color')); });

2. Utwórz routing, na który ma nastąpić przekierowanie i który posłuży do wyświetlenia danych: Route::get('userresults', function() { return 'Twoją nazwą użytkownika jest: ' . Input::old('username') . '
Twoim ulubionym kolorem jest: ' . Input::old('color'); });

Jak to działa… W naszym prostym formularzu przesyłamy dane metodą POST na ten sam adres URL, musimy więc utworzyć nowy routing o tej samej ścieżce co bieżący, ale dla metody POST. W tym miejscu możemy wykonać operacje na danych, takie jak zapis do bazy i walidacja. W naszym przypadku przesyłamy po prostu dane na następną stronę. Istnieje wiele sposobów osiągnięcia tego celu. Jednym z nich jest wykorzystanie metody flashOnly() dostępnej w klasie Input: Route::post('userform', function() { Input::flashOnly('username', 'color'); return Redirect::to('userresults'); });

Wykorzystujemy jednak skrót dostarczany przez Laravela i przesyłamy jedynie dwa z trzech pól formularza. Na następnej stronie wykorzystujemy metodę Input::old() do wyświetlenia przechowywanych danych wejściowych.

Zobacz także  Receptura „Tworzenie prostego formularza”

32

Rozdział 2. • Pobieranie danych wejściowych

Walidacja danych wysłanych przez użytkownika W większości formularzy w aplikacjach internetowych dostępne są pola, których wypełnienie jest obowiązkowe. W niektórych sytuacjach chcemy też, aby wszystkie adresy e-mail były prawidłowo sformatowane lub by wybrane pole zawierało określoną liczbę znaków. Klasa Validator frameworka Laravel umożliwia sprawdzenie tych reguł i poinformowanie użytkownika, gdy któraś z nich nie będzie spełniona.

Przygotowanie W tej recepturze wykorzystamy standardową instalację Laravela.

Jak to zrobić… Aby wykonać kroki tej receptury, postępuj zgodnie z poniższymi wskazówkami: 1. Utwórz routing dla formularza: Route::get('userform', function() { return View::make('userform'); });

2. Utwórz plik widoku userform.php i dodaj formularz: Informacje o użytkowniku