Adrian P.

Adrian P. pamiętaj o tym, kto
chce latać musi
skoczyć

Temat: Zend Framework 2 - książki

Hej,

planuję rozpocząć przygodę z ZF 2.
Szukam jakieś ciekawej książki/tutoriali.
Planuję przepisać swój obecny CMS.
Zagadnienia jakie mnie interesują to:
- system logowania, autologowanie, uwierzytelnianie, uprawnienia, acl
- rozwiązywanie problemów bazodanowych w stylu relacja wiele do wielu czy jeden do wielu (np. systemu tagów, artykuł -> artykul_rel_tag -> tagi)
- szablony - wstrzykiwanie kodu w którym miejscu aby był dostępny w całym serwisie (chodzi o kalendarium, który widoczny jest na każdej podstronie i pobiera dane z bazy danych), czy też menu w zależności czy gość czy zarejestrowany czy administrator...
- wielojęzyczność serwisu, fajnie aby było coś takiego że dla domyślnego języka nic nie dodaje a dla każdego innego tak, np. domyślny PL: http://moja-strona.com, DE: http://moja-strona.com/de ENG: http://moja-strona.com/eng
- routing
- w zależności od poziomu uprawnień spersonalizowane zapytania MySQL

Jakieś dodatkowe zagadnienia i problemy z którymi można napotkać na swojej drodze mile widziane ;)

Dzięki za pomoc :)Ten post został edytowany przez Autora dnia 23.11.15 o godzinie 11:00
Paweł Malisak

Paweł Malisak PHP Developer

Temat: Zend Framework 2 - książki

Adrian P.:
Zagadnienia jakie mnie interesują to:
- system logowania, autologowanie, uwierzytelnianie, uprawnienia, acl

do uwierzytelniania polecam moduł rbac ( https://github.com/ZF-Commons/zfc-rbac/tree/master/docs )

jeśli chodzi o autentykację to zf2 ma wbudoway \Zend\Authentication\AuthenticationService, cała idea polega na napisaniu Adaptera, ewentualnie Storage ( lub skorzystać z dostępnych ).

artykułów jest sporo np.
http://blog.alejandrocelaya.com/2014/08/23/managing-au...
- rozwiązywanie problemów bazodanowych w stylu relacja wiele do wielu czy jeden do wielu (np. systemu tagów, artykuł -> artykul_rel_tag -> tagi)

doctrine ?
- szablony - wstrzykiwanie kodu w którym miejscu aby był dostępny w całym serwisie (chodzi o kalendarium, który widoczny jest na każdej podstronie i pobiera dane z bazy danych), czy też

w Module.php w onBootrap(), ewentualnie PluginManager + trait, lub ViewHelper napisać własny z fabryką
menu w zależności czy gość czy zarejestrowany czy administrator...

to już sobie trzeba napisać te ify
- wielojęzyczność serwisu, fajnie aby było coś takiego że dla domyślnego języka nic nie dodaje a dla każdego innego tak, np. domyślny PL: http://moja-strona.com, DE: http://moja-strona.com/de ENG: http://moja-strona.com/eng

to jest kwestia ustawiania regułki w routingu, a potem obsługa tego, są artykuły na ten temat
- routing

dobrze opisany w dokumentacji, dużo przykładów na sieci
- w zależności od poziomu uprawnień spersonalizowane zapytania MySQL

to już ifami sobie musisz załatwić wg mnie
Adrian P.

Adrian P. pamiętaj o tym, kto
chce latać musi
skoczyć

Temat: Zend Framework 2 - książki

Paweł M.:

do uwierzytelniania polecam moduł rbac ( https://github.com/ZF-Commons/zfc-rbac/tree/master/docs )

jeśli chodzi o autentykację to zf2 ma wbudoway \Zend\Authentication\AuthenticationService, cała idea polega na napisaniu Adaptera, ewentualnie Storage ( lub skorzystać z dostępnych ).

artykułów jest sporo np.
http://blog.alejandrocelaya.com/2014/08/23/managing-au...

dzięki, za info.
- rozwiązywanie problemów bazodanowych w stylu relacja wiele do wielu czy jeden do wielu (np. systemu tagów, artykuł -> artykul_rel_tag -> tagi)

doctrine ?
poczytam o tym :)
- szablony - wstrzykiwanie kodu w którym miejscu aby był dostępny w całym serwisie (chodzi o kalendarium, który widoczny jest na każdej podstronie i pobiera dane z bazy danych), czy też

w Module.php w onBootrap(), ewentualnie PluginManager + trait, lub ViewHelper napisać własny z fabryką
jeśli mam kilka modułów, np Users, Articles, Forum, Poll, to chyba lepiej będzie ViewHelper lub fabrykę?
menu w zależności czy gość czy zarejestrowany czy administrator...

to już sobie trzeba napisać te ify
tak myślałem, ale chciałem zapytać mądrzejszych :)
- wielojęzyczność serwisu, fajnie aby było coś takiego że dla domyślnego języka nic nie dodaje a dla każdego innego tak, np. domyślny PL: http://moja-strona.com, DE: http://moja-strona.com/de ENG: http://moja-strona.com/eng

to jest kwestia ustawiania regułki w routingu, a potem obsługa tego, są artykuły na ten temat
- routing

dobrze opisany w dokumentacji, dużo przykładów na sieci
napisałem o tym, bo chciałem wypisać wszystkie zagadnienia jakie mnie interesują
- w zależności od poziomu uprawnień spersonalizowane zapytania MySQL

to już ifami sobie musisz załatwić wg mnie
tak myślałem ;)

Dzięki za informacje, czyli raczej nie ma książki, która by to wszystko zawierała w sobie?
Paweł Malisak

Paweł Malisak PHP Developer

Temat: Zend Framework 2 - książki

jeśli mam kilka modułów, np Users, Articles, Forum, Poll, to chyba lepiej będzie ViewHelper lub fabrykę?

nie do końca rozumiem co masz na myśli i jaką strukturę CMS przyjmiesz, bo jeśli przez moduł masz na myśli moduły jak w Joomla to raczej ViewHelper, ale wg mnie tak nie powinien autorski cms wyglądać, to raczej rozwiązanie, które jest kulą u nogi ;)
Dzięki za informacje, czyli raczej nie ma książki, która by to wszystko zawierała w sobie?

niestety nie kupowałem żadnej, byłem na kursie ( sponsorowany przez UE, tak to kosztuje kilka tysięcy zł ) oraz w pracy miałem od kogo się uczyć, a tak to artykuły, widzę, że na amazon coś tam nawet jest więc możesz poszukać, po polsku raczej na 99% nie znajdziesz
Adrian P.

Adrian P. pamiętaj o tym, kto
chce latać musi
skoczyć

Temat: Zend Framework 2 - książki

W sumie to żadnej struktury nie przyjąłem ;)
Wydawało mi się, że na wzór modułu "Application" (Zend Skeleton Application) trzeba budować każdy moduł i że każdy moduł to odrębna niezależna część CMS'a
I dlatego napisałem listę modułów jakie na bank chcę zrobić ;)
Z Jommla dawno nie korzystałem także ciężko mi porównać budowę modułów...
Mogę to zrobić w Application, tylko wydawało mi się, że to złe rozwiązanie.

Właśnie dlatego przydała by się książka, która pokazała by jak dobrze wykorzystać ZF2 ;)

No właśnie cena kursu mnie przestraszyła trochę ;)
Paweł Malisak

Paweł Malisak PHP Developer

Temat: Zend Framework 2 - książki

Adrian P.:
W sumie to żadnej struktury nie przyjąłem ;)
Wydawało mi się, że na wzór modułu "Application" (Zend Skeleton Application) trzeba budować każdy moduł i że każdy moduł to odrębna niezależna część CMS'a

Tak, tak, dobrze myślisz :) Możesz tak zrobić. Wydawało mi się, że pytasz o ten element, że chciałbyś, aby w każdej akcji każdego kontrolera wyświetlało się menu, którego opcje są pobierane z bazy... i ten element nazywasz modułem.

Tylko teraz pytanie czy każdy moduł będziesz miał stworzony w ten sposób:

User\src\Controller\SiteUserController.php
User\src\Controller\AdminUserController.php
Blog\src\Controller\SitePostController.php
Blog\src\Controller\SiteCommentController.php

czy:

Admin\src\Controller\UserController.php
Admin\src\Controller\LoginController.php
Admin\src\Controller\BlogPostController.php

Site\src\Controller\UserController.php
Site\src\Controller\BlogPostController.php

a może inaczej jeszcze jakoś ;)Ten post został edytowany przez Autora dnia 24.11.15 o godzinie 14:31
Adrian P.

Adrian P. pamiętaj o tym, kto
chce latać musi
skoczyć

Temat: Zend Framework 2 - książki

Ha, i to jest dobre pytanie :D

Przez moment mi przeszło coś takiego, aby do zarządzania (edycja, usuwanie, dodawanie) zrobić wszystko w module Admin, ale wtedy część rzeczy bym kopiował z pozostałych modułów, dlatego chyba lepiej będzie aby każdy moduł był od siebie niezależny, w module Users dokonuję wszystkie operacje na użytkownikach, w module Articles wszystko co dotyczy artykułów.
Tylko teraz pytanie co w przypadku kiedy kilka modułów potrzebuje tego samego?
Miałem na myśli autoryzację, bo wtedy wypadałoby ją podpiąć w każdym module w onBootstrap...

Zastanawiam się co w przypadku np. komentarzy.
Chodzi o to, że do tej pory robiłem coś takiego, że z tej samej tabeli korzysta kilka elementów serwisu, a odpowiednie komentarze identyfikowane są po pewnym parametrze "type", gdzie
jeśli type="articles" to dot. artykułów
jeśli type="users" to dot. komentarzy do profili użytkowników.

Odwołać się do samej bazy danych to nie problem tylko teraz czy takie komentarze zrobić jako osobny moduł czy do każdego modułu zrobić taki sam panel zarządzania z warunkiem type=model?Ten post został edytowany przez Autora dnia 24.11.15 o godzinie 15:02
Adrian P.

Adrian P. pamiętaj o tym, kto
chce latać musi
skoczyć

Temat: Zend Framework 2 - książki

Utworzyłem sobie pewną klasę:
use Zend\Authentication\Storage;

class MyAuthStorage extends Storage\Session
{
public function setRememberMe($rememberMe = 0, $time = 1209600)
{
if ($rememberMe == 1) {
$this->session->getManager()->rememberMe($time);
}
}

public function forgetMe()
{
$this->session->getManager()->forgetMe();
}
}


dodaję ją w module.config.php w "factories".

W każdym kontrolerze (tzn. w kontrolerze odpowiedzialnym za zalogowanie i za wylogowanie) dodaję coś takiego:
	public function getSessionStorage()
{
if (! $this->storage) {
$this->storage = $this->getServiceLocator()
->get('Users\Model\MyAuthStorage');
}
return $this->storage;
}
public function getAuthService()
{
if(!$this->authservice)
{
$dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
$dbTableAuthAdapter = new DbTableAuthAdapter($dbAdapter, 'user','email','password');

$authService = new AuthenticationService();
$authService->setAdapter($dbTableAuthAdapter);
$this->authservice = $authService;
}

return $this->authservice;
}


podczas logowania robię coś takiego:
			if ($this->request->getPost('remember')) {
$this->getSessionStorage()->setRememberMe(1);
$this->getAuthService()->setStorage($this->getSessionStorage());
}

Może głupie pytanie ale gdzie to jest zapisywane? ;)
Jedyne ciasteczko jakie mam w przeglądarce to PHPSESSID,
Zend zadba o to by w razie kradzieży "PHPSESSID" nie zalogowało?

Zastanawiam się gdzie wstrzyknąć kod, który będzie powielany, zrobić osobną factory i w każdym module ją dopisać?

W widoku jak sprawdzić czy istnieje jakaś zmienna w sesji?
w kontrolerze mogę dać coś takiego:
if($this->getAuthService()->getStorage()->read("email")) { ... }


mam coś takiego, że w wybranych kontrolerach odwołuję się do ViewModel, jeśli chcę przekazać jakaś zmienną, dla wszystkich widoków to za każdym razem ją muszę dodawać po new ViewModel?
Chodzi o to abym w widoku miał dostęp do danych użytkownika (login, mail, id)
Paweł Malisak

Paweł Malisak PHP Developer

Temat: Zend Framework 2 - książki

Nie musisz tego dodawać w każdym kontrolerze. Jest gotowy plugin do kontrolera oraz do widoku.

$this->identity()


Ponadtwo powinieneś ustawiać storage i adapter w fabryce, a nie w kontrolerze. Do kotrolera idzie tylko gotowy AuthenticationService i jest on tylko potrzebny podczas logowania i wylogowania, tak jak w przykładzie z linka co Ci dałem w pierwszym linku.Ten post został edytowany przez Autora dnia 30.11.15 o godzinie 19:23

Następna dyskusja:

Aplikacje oparte na Zend Fr...




Wyślij zaproszenie do