URL, URI różnice i podobieństwa



Podobne dokumenty
Mechanizm routingu mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

Backend Administratora

Baza danych i ORM mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Laboratorium 7 Blog: dodawanie i edycja wpisów

REFERAT O PRACY DYPLOMOWEJ

Tworzenie szablonów użytkownika

3.4. Opis konfiguracji layoutów.

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Podstawy technologii WWW

Data wydania: Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

dokumentacja Edytor Bazy Zmiennych Edytor Bazy Zmiennych Podręcznik użytkownika

Symfonia Produkcja. Kreator raportów. Wersja 2013

Modele danych walidacja widoki zorientowane na model

1.Formatowanie tekstu z użyciem stylów

Tekst na mapach. Teksty na mapie. Ustawienia mapy. W tej instrukcji zostanie opisany sposób w jaki można na mapach wyświetlać teksty

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Przewodnik Szybki start

Instrukcja laboratoryjna

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Pierwsza niedogodność dotyczy strony zarządzaj działami.

Skanowanie OCR w aplikacji Kancelaria Komornika. Instrukcja dla użytkownika

Tworzenie prezentacji w MS PowerPoint

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0

3. Budowa prostych raportów opartych o bazę danych

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

2017/2018 WGGiOS AGH. LibreOffice Base

Podręcznik użytkownika Wprowadzający aplikacji Wykaz2

Platforma e-learningowa

Dodawanie operacji dodatkowych w WAPRO Mag.

ABSOLUTNE POCZĄTKI. Logowanie Jak się zalogować? Jak się wylogować? Pasek narzędzi Szpilka dokująca... 3

Jak nadać dokumentowi żądany numer?

PWI Instrukcja użytkownika

PRZEWODNIK PO ETRADER ROZDZIAŁ XII. ALERTY SPIS TREŚCI

Stosowanie, tworzenie i modyfikowanie stylów.

5. Mechanizm szablonów.

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

Instrukcja portalu TuTej24.pl

Część II Wyświetlanie obrazów

Umowy Instrukcja użytkownika systemu GW-MAX

Instrukcja użytkownika

DOKUMENTACJA CMS/Framework BF5.0

VinCent Administrator

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

DODAJEMY TREŚĆ DO STRONY

Wprowadzenie do Doctrine ORM

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Laboratorium 6 Tworzenie bloga w Zend Framework

5.4. Tworzymy formularze

Podręcznik użytkownika Publikujący aplikacji Wykaz2


Baza danych. Program: Access 2007

Aplikacja Novell Filr 2.0 Web Szybki start

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

KS-ZSA. Mechanizm centralnego zarządzania rolami

Zbieranie kontaktów.

Rozdział 5: Style tekstu

Program dla praktyki lekarskiej. Instrukcja Modułu Importu Dokumentacji Zewnętrznej

Moduł Handlowo-Magazynowy Przeprowadzanie inwentaryzacji z użyciem kolektorów danych

finiownia loginów. W zależności od ustawionej opcji użytkownik login:

Spis treści. Ulotka 2 v.7.3

najlepszych trików Excelu

Podstawy technologii WWW

Laboratorium 4: Routing

Podręcznik użytkownika Obieg dokumentów

Instrukcja użytkownika BIP

Dokumentacja fillup - MS SQL

Program szkolenia: Symfony, nowoczesny framework PHP

Program. Pielęgniarki ambulatoryjnej. Pielęgniarki rodzinnej. Położnej. Copyright Ericpol Telecom sp. z o.o.

Funkcje standardowe. Filtrowanie

Dodawanie i modyfikacja atrybutów zbioru

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Dokumentacja użytkownika systemu

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

,Aplikacja Okazje SMS

Nowe funkcje w programie Symfonia Mała Księgowość

Dokumentacja użytkownika systemu. Miniaplikacja Filtrowanie adresów IP

Część 3 - Konfiguracja

Formatowanie tekstu za pomocą zdefiniowanych stylów. Włączanie okna stylów. 1. zaznaczyć tekst, który chcemy formatować

Logowanie do systemu. Rys. 1 Strona logowania

1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3

Viatoll Calc v1.3. Viatoll Calc. Instrukcja użytkownika. Strona 1

Forte Zarządzanie Produkcją Instalacja i konfiguracja. Wersja B

Połączenie AutoCad'a z bazą danych

Opis modułu pl.id w programie Komornik SQL-VAT

MATERIAŁY - udostępnianie materiałów dydaktycznych w sieci SGH

Data dokumentu: 22 stycznia 2014 Wersja: 1.1 Autorzy: Grzegorz Orzechowski, Michał Rogowski, Paweł Jankowski

INSTRUKCJA OBSŁUGI ARKUSZA FAKTURA_VAT.XLSX

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

I. Program II. Opis głównych funkcji programu... 19

1. Logowanie się do panelu Adminitracyjnego

OPIS KRYTERIÓW PRZYZNAWANIA PUNKTÓW ZA MINIMALNE FUNKCJONALNOŚCI SYSTEMU

Instrukcja obsługi systemu zarządzania treścią dwajeden.pl

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE

Bazy danych raporty. 1. Przekopiuj na dysk F:\ bazę M5BIB.mdb z dysku wskazanego przez prowadzącego.

Tworzenie prezentacji, PowerPoint

Transkrypt:

Mechanizm routingu

URL, URI różnice i podobieństwa URL (Uniform Resource Locator) unikalny identyfikator wskazujący lokalizację zasobu sieciowego. URI (Uniform Resource Identyficatior) unikalny identyfikator zasobu sieciowego. Standardowo URI strony www (np. http://www.onet.pl) jest utożsamiany z jej URL. Przykładowe URI (tożsame z URL) http://tjach.pl/systemy-wielowarstwowe/ http://www.google.com/search?q=systemy+wielowarstowe&ie=utf- 8&oe=utf-8 Rozróżnienie URI i URL jest istotne m. in. z punktu widzenia tzw. sieci semantycznej (Semantic Web). Wiedza ludzka powinna być zapisana w ustandaryzowanym formacie, a każdy zapis ma swój jednoznaczny identyfikator, odnoszący się do bytów rzeczywistych i abstrakcyjnych.

Przetwarzanie URL z punktu widzenia platformy Symfony URL interfejs zasób <=> użytkownik Wady tradycyjnych URL: o Link postaci test.pl/?id=5&shva=1 nie mówi nic na temat zasobu na jaki wskazuje. o Ujawniają wewnętrzną strukturę aplikacji możliwe ryzyko bezpieczeństwa. Mechanizm routingu dedykowany framework wbudowany w Symfony, służący zarządzaniu wewnętrznymi i zewnętrznymi URL ami. Gdy przychodzi żądanie wyświetlenia danej strony mechanizm routingu parsuje URL a i konwertuje go na wewnętrzny identyfikator URI. /ad/show/id/1 ad/show?id=1

Format URI Generalnie wewnętrzne URI są projektowane według następującego wzorca: MODULE/ACTION?key=value&key_1=value_1&... W przykładowym URI: /ad/show/id/1 ad nazwa modułu, show nazwa akcji, id/1 - parametr Routing jest mechanizmem dwukierunkowym zmiana URLi nie niesie ze sobą konieczności zmiany wewnętrznej implementacji URI. W szablonie index.html.twig: {{ path('ens_job_show', { 'id': entity.id }) }}

Konfiguracja routingu Przyporządkowanie URI URL jest definiowane w pliku konfiguracyjnym routing.yml. Plik ten opisuje tzw. ścieżki. Każda ścieżka ma swoją nazwę (np. ens_stud_ad_homepage), wzorzec w postaci wyrażenia regularnego i ewentualne parametry (/hello/{name}). Podczas żądania dostępu do zasobu, mechanizm routingu próbuje dopasować wzorzec do adresu URL. Kolejność ścieżek jest bardzo ważna! Pierwsza ścieżka która zostanie dopasowana wygrywa. ścieżki Proszę sprawdzić co robi: http://localhost:8080/hello/tomek

Wyszukiwanie odpowiedniej ścieżki

Routing w środowisku developerskim Proszę zmodyfikować plik app/config/routing_dev.yml aby wyglądał następująco:

Zmiana domyślnej strony głównej Proszę modyfikować plik src\ens\studadbundle\resources\config\routing.yml, aby wskazywał na stworzony uprzednio moduł ad:

Drobne poprawki w szablonie Zmieniamy src/ens/studadbundle/resources/views/layout.html.twig by korzystał z nowej ścieżki: Zmienimy adresy w formacie: http://localhost:8080/ens_ad/show/id/1 na bardziej przyjazny zapis: http://localhost:8080/ens_ad/katowice-polska/1/sprzedam-dyplom czyli chcemy adres w formacie: /ens_ad/{location}/{id}/{name}

Zmiana adresów \src\ens\studadbundle\resources\config\routing\ad.yml Zmodyfikuj szalbon \src\ens\studadbundle\resources\views\ad\index.html.twig dodając uwzględnione w ścieżce parametry w funkcji path: Proszę sprawdzić zmiany w adresie url, klikając na szczegóły wybranego ogłoszenia

Przyjazne adresy URL c.d. Rozwiązanie prawie działa. Ale zamiast: http://localhost:8080/app_dev.php/ens_ad/katowice-polska/1/sprzedam-dyplom jest http://localhost:8080/app_dev.php/ens_ad/katowice, Polska/1/Sprzedam dyplom Wynika to z występowania spacji w tytule ogłoszenia Sprzedam dyplom. Dlatego należałoby stworzyć funkcję naprawczą, która zamieni wszystkie znaki nie będące literami bądź cyframi znakiem myślnika (-). Proszę otworzyć plik \src\ens\studadbundle\entity\ad.php i dopisać następujące funkcje: Dopisz również przed definicją klasy:

Przyjazne adresy URL c.d. Proszę utworzyć plik src\ens\studadbundle\utils\naprawiacz.php z następującą zawartością: I wszystko powinno działać jak należy.

Walidacja ścieżek System routingu ma wbudowane mechanizmy do walidacji URL. Każda zmienna zdefiniowana we wzorcu może zostać poddana walidacji wykorzystując wyrażenia regularne. Odpowiada za to sekcja requirements. Powyższy zapis narzuca wymaganie, aby zmienna id była typu numerycznego. W przeciwnym wypadku ścieżka nie zostanie dopasowana i następuje próba analizy wzorca innej ścieżki.

Ufff.. Routing omówiony...

Zmiany w logice aplikacji - ogłoszenia

Zmiany w logice działania aplikacji ogłoszenia nie starsze niż 30 dni Aktualnie wszystkie ogłoszenia są wyświetlane Ogłoszenia nie starsze niż 30 dni

Naprawiamy dodawanie ogłoszeń Proszę dokonać zmian w layout.html.twig: Oraz zmian w AdControler.php:

Debug zapytań SQL Będąc w środowisku developerskim, uzupełniają się automatycznie logi odnośnie wszelkich działań w aplikacji, w tym widoczne są wszelkie zapytania SQL kierowane do odpowiedniego systemu bazodanowego. Wszelkie dzienniki znajdują się w katalogu /log. Znak? w zapytaniu oznacza, że Doctrine jest odpowiedzialne za podstawienie tam rzeczywistej wartości w bezpieczny sposób. Można korzystać też z paska logów - szybciej:

Tylko aktywne ogłoszenia Zmiany w ORM autouzupełnianie pola createdat: Przebudowa ORM: symfony doctrine:generate:entities EnsStudAdBundle Jakie wpisać zapytanie, aby tylko aktywne ogłoszenia były widoczne (wykorzystując dane zawarte w expires_at?) Trzeba dokonać edycji nowej funkcji w src/ens/studadbundle/entity/ad.php

Tylko aktywne ogłoszenia c.d. Już prawie koniec. Jeszcze tylko faktyczna zmiana w kontrolerze: Proszę sprawdzić działanie, dodając ogłoszenie, z odpowiednią datą.

Refactoring czyli naprawiamy MVC Poprzedni kod działa dobrze, ale miesza warstwy kontrolera i modelu (obiekt Doctrine_Query należy do modelu). Należy stworzyć zatem dodatkową metodę w warstwie ORM src\ens\studadbundle\resources\config\doctrine\ad.orm.yml: Oraz przebudować warstwę ORM: symfony doctrine:generate:entities EnsStudAdBundle

Refactoring czyli naprawiamy MVC c.d. Teraz trzeba dodać nową metodę getactiveads do src\ens\studadbundle\repository\adrepository.php:

Refactoring czyli naprawiamy MVC Na koniec wprowadzić poprawki do kontrolera: I przetestować czy wszystko działa jak wcześniej.

Wyświetlanie kategorii ogłoszeń na stronie głównej Podobnie jak wcześniej, trzeba zmodyfikować ORM, tym razem jednak dla Category.orm.yml: Przeładować: symfony doctrine:generate:entities EnsStudAdBundle Dodać nową metodę:

rzygotowanie do wyświetlania kategorii Zmienić kontroler odpowiednio: Ale żeby to wszystko działało musimy dodać nową właściwość do klasy src/ens/studadbundle/entity/category. php

odyfikacja szablonu - kategorie

Testujemy zmiany Proszę z poziomu phpmyadmina dodać dwie kategorie. Ponadto dokonać zmian w klasie src/ens/studadbundle/entity/category.php dodając metodę: Oraz dodać ogłoszenie

Limitowanie rezultatów 10 ogłoszeń na stronę Należy zmodyfikować funkcję getactiveads() z klasy AdRepository w sposób następujący:

Limitowanie rezultatów c.d. Dodatkowo należy zmienić AdControler: Ale wówczas liczba rezultatów na stronę zostanie ustawiona na stałe (10). Dobrze jest więc zdefiniować parametr globalny w pliku app/config/config.yml

Limitowanie rezultatów c.d. Jednakże trzeba jeszcze nieco zmodyfikować kontroler by brał pod uwagę wprowadzony parametr:

Zabezpieczenie dostępu do nieaktywnych ogłoszeń Znając link do nieaktywnego ogłoszenia nadal można je podejrzeć. Aby to naprawić, zostanie stworzona nowa funkcja w AdRepository.php:

Zabezpieczenie dostępu do nieaktywnych ogłoszeń c.d. Teraz jeszcze tylko drobna zmiana w kontrolerze (by korzystał ze wprowadzonej funkcji):

Poprawny efekt działania

Zmiany w logice aplikacji - kategorie

Wyświetlanie wszystkich ogłoszeń z danej kategorii licznik Chcąc wyświetlić wszystkie ogłoszenia z danej kategorii dobrze jest zrobić osobną ścieżkę do tego celu: Widać, że trzeba będzie zaprojektować nowy moduł oraz stworzyć wirtualny akcesor (bo takiego pola nie ma w bazie danych) dla zmiennej nazwapopraw. Edytujemy więc plik src/ens/studadbundle/entity/category.php:

yświetlanie linku do kategorii modyfikacja szablonu Aby dodać link, który będzie się wyświetlał jeśli w danej kategorii jest więcej niż 10 dokumentów edytujemy szablon index.html.twig: http://www.tomaszx.pl/materialy/sf_index.html.twig

Modyfikacja ORM Category.php Dodajemy do pliku src/ens/studadbundle/entity/category.php pole more_ads oraz akcesor i modyfikator: Pozostaje jeszcze wprowadzenie zmian w kontrolerze ogłoszeń:

Zmiany w AdController.php Wywołano metodę countactiveads(), którą trzeba zdefiniować

Definicja countactiveads src/ens/studadbundle/repository/adrepository.php

Szybki test zmian

Tworzymy moduł dla kategorii Aby stworzyć moduł można skorzystać z doctrine:generate:crud, ale w tym przypadku lepiej zrobić to ręcznie: src/ens/studadbundle/controller/categorycontroller

dycja bazy danych Zmieńmy plik Resources/config/doctrine/Category.orm.yml w sposób następujący:

Edycja bazy danych c.d. Usuwamy metodę getnazwapopraw() z /Entity/Category.php. Aktualizujemy ORM komendą: symfony doctrine:generate:entities EnsStudAdBundle Implementujemy metodę setnazwapoprawvalue(): Robimy kopie zapasową danych bazy (phpmyadmin). Uaktualniamy bazę danych: symfony doctrine:database:drop --force symfony doctrine:database:create symfony doctrine:schema:update - force Wpisujemy nowe przykładowe dane.

Tworzenie strony z kategoriami Aktualizujemy pusty kontroler:

Tworzenie szablonu show.html.twig src\ens\studadbundle\resources\views\category

Podział listy kategorii na strony Spróbujmy podzielić wszystkie kategorie na 20 per stronę. Zmiany w Resources/config/routing.yml: Zmiany w konfiguracji app/config/config.yml:

src/ens/studadbundle/repository/adrepository.php Modyfikacja getactiveads

Dostosowanie kontrolera kategorii Dodanie metody getactiveadsquery() spowodowało, że można również dokonać refactoringu metod getactiveads() oraz countactivejobs(), aby korzystały z nowostworzonej. Teraz trzeba jeszcze tylko zaktualizować szablon.

Szablon showsuccess.php Proszę uaktualnić szablon znajdujący się w pliku src\ens\studadbundle\resources\views\category \show.html.twig zgodnie z zawartością podaną w materiałach Należy dokonać ewentualnych zmian jeżeli nie została zachowana konwencja nazewnicza stosowana na zajęciach. Następnie proszę sprawdzić, czy dodana funkcjonalność działa jak należy (kategorie się właściwie wyświetlają)

Test zmian

Ćwiczenie Proszę dołożyć pliki stylu, oraz zmienić na tej podstawie wygląd wszystkich stron aplikacji. Jeśli zajdzie taka potrzeba zmodyfikuj odpowiednie pliki *.php Wymagania: Na stronie z ogłoszeniami oraz po wejściu do danej kategorii ma się wyświetlać jedynie tytuł ogłoszenia, jego skrócona treść (do np. 50 znaków) oraz data ważności. Liczba wyświetlanych znaków treści ma być modyfikowalna w pliku konfiguracyjnym aplikacji. Po kliknięciu na nazwę danego ogłoszenia, mają się wyświetlić szczegóły z nim związane (Nazwa, słowna kategoria do której przynależy, pełny opis, mail, telefon, strona www, data utworzenia oraz data ważności), dokładnie w tej kolejności. Proszę popracować nad samym wyglądem tych stron. Mile widziane: zmiana koloru tła wiersza tabeli w zależności od tego czy to wiersz parzysty czy nieparzysty, odpowiednie odstępy między polami, odpowiednio dobrana czcionka (pogrubienie, krój czcionki). Podobnie proszę zmienić wygląd strony do Edytowania/Dodawania nowych ogłoszeń.