Implementacja „Ports and Adapters” w PHP przy pomocy Symfony 20-01-2019
Autor: Grzegorz Olejarz. Kategorie: Link , 0 komentarzyZapraszam do przeczytania mojego artykułu na portalu Medium: Ports and Adapters implementation in PHP, with a little help from Symfony [ENG].

Prezentacja pt. „Nowoczesne strony i aplikacje internetowe” 14-01-2009
Autor: Grzegorz Olejarz. Kategorie: Tworzenie stron www , 0 komentarzyNa spotkaniu Koła Naukowego Grafiki Komputerowej i Geomatyki przedstawiłem krótki referat o tworzeniu stron internetowych w oparciu o wzorzec MVC i frameworki PHP.
Multicheckboxy zamiast multiselectorów w CakePHP 1.2RC2 13-09-2008
Autor: Grzegorz Olejarz. Kategorie: CakePHP , 0 komentarzyMając zaprojektowaną bazę danych i zdefiniowaną relację wiele-do-wielu, skrypt „bake” generuje kod strony. Relacja wiele-do-wielu przedstawiona jest jako lista „multiselect” – lista wielokrotnego wyboru. Lista ta jest o tyle niewygodna, że chcąc wybrać kilka opcji, trzeba robić to z wciśniętym przyciskiem ctrl. Jeden nieuważny ruch, przypadkowe kliknięcie i cały proces wyboru trzeba powtarzać od nowa.
Można usunąć tą niedogodność zamieniając listę wielokrotnego wyboru na listę checkboxów:
W widoku dodajemy tablicę atrybutów:
echo $form->input('Post.Tag', array('type'=>'select', 'multiple'=>'checkbox', 'options'=>$tags, 'label'=>'Tagi:' )); |
Można zmienić jeszcze kontroler, aby generował listę tagów, gdzie wartością jest nazwa tagu, kluczem natomiast jest Tag.id – identyfikator w bazie danych. Lista taka służy do tego, aby w widoku były nazwy przy checkboxach, a nie identyfikatory:
$tags = $this->Post->Tag->find('list', array('fields'=>'Tag.name')); $this->set(compact('tags')); |
CakePHP 1.2 RC2, brak mod_rewrite i serwery AGH 05-09-2008
Autor: Grzegorz Olejarz. Kategorie: CakePHP , 0 komentarzyBrak modułu przepisującego adresy mod_rewrite w przypadku CakePHP objawia się między innymi brakiem „ładnych” adresów. Tyle przynajmniej wyczytałem w manualu Cake’a (link). Niestety brak wspomnianego modułu apache skutkuje jeszcze błędnym działaniem HtmlHelpera, a konkretniej metody HtmlHelper->link. Po długich poszukiwaniach udało mi się znaleźć rozwiązanie, które wydaje się być skuteczne na serwerze AGH.
Krótki tutorial:
- Usuwamy pliki .htaccess z 3 katalogów:
- /.htaccess (katalog główny aplikacji)
- /app/.htaccess
- /app/webroot/.htaccess
- Edytujemy plik /app/config/core.php i wyłączamy komentarz linijki:
Configure::write(’App.baseUrl’, env(’SCRIPT_NAME’));
- Przed w/w linią dopisujemy:
$tmp_base = env('SCRIPT_NAME'); $len = stripos($tmp_base,"index.php") + 9; $tmp_base = substr($tmp_base,0,$len);
- Linię
Configure::write(’App.baseUrl’, env(’SCRIPT_NAME’));
zamieniamy na:
Configure::write('App.baseUrl', $tmp_base);
Odnośniki, które wyglądały następująco:
http://student.agh.edu.pl/~twoja-nazwa/posts/index
mają postać:
http://student.agh.edu.pl/~twoja-nazwa/index.php/posts/index
Również metoda HtmlHelper->link poprawnie generuje odnośniki użyte w aplikacji.
—
Po kilku testach okazało się, że opisana metoda nie działa w 100%. Zainstalowanie aplikacji w ścieżce:
http://student.agh.edu.pl/~twoja-nazwa/aplikacja/
nie przekierowuje się automatycznie na index.php:
http://student.agh.edu.pl/~twoja-nazwa/aplikacja/index.php
Wpisanie w przeglądarkę powyższej ścieżki daje dobry rezultat.
Rozwiązaniem tego problemu jest ręczne wpisanie do pliku /app/config/core.php ścieżki do aplikacji:
Configure::write('App.baseUrl', '/~twoja-nazwa/aplikacja/index.php'); |
Teraz przekierowanie działa poprawnie.