Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Module Manager ZF2

[es] :: PHP :: Module Manager ZF2

[ Pregleda: 2537 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
*.dynamic.sbb.rs.



+7 Profil

icon Module Manager ZF206.09.2013. u 15:27 - pre 128 meseci
Ljudi potrebno je da mi neko recima pojasni koji su najbolji koraci i metode u izradi ove dve komponente.
Radim u Zend Frameworku 2 i vec imam brdo svojih modula koje koristim po potrebi. Sada ja sam hteo da sve to sjedinim i da pretvorim u jedan simple cms. Znaci napravio bi staticke module koji se ne mogu obrisati i uvek bi dostupni. Npr to bi bili moduli kao sto su (Dashboard, Article Manager, User Manager, Template Manager, Module Manager) znaci par neophodnih. A ovi ostali koji se instaliraju putem Module manager modula, oni ce biti shared moduli i moci ce da se brisu od strane korisnika <administratora>.

Sta mene buni, buni me to sto ne mogu da skontam koji je najpravilniji put i nacin da se odrade module manager i template manager.

Kako sam ja to nacrtao i osmislio za module manager:

1. Korisnik uplouduje zipovan modul
2. Dekompresujem ga i proverim da li modul sadrzi neophodne fajlove tipa (config, controllere, view i sql fajlove)
3. Nakon toga dekompresovani modul prebacujem u shared module direktorijum i upisujem u bazu novi instalirani modul.

Samim ovim bi ja trebao da dobijem novi modul u administraciji. Jer ja zamisljam kada hocu da vidim koji su mi moduli instalirani da to izcitam iz baze? ili je bolje da citam sam direktorijum?

Mali problem oko svega ovoga je to sto sam ZF2 zahteva da se u konfiguraciji frameworka informise o novom modulu. Sama konfiguracija je jedan multi niz i pri samoj instalaciji ja bi trebao dodati jos jednu vrednost u datom (postojecem) nizu a da ne promenim ostale vrednosti, sto ja nemam ideju kako to da izvedem....

Najvise od svega me zanima ako je neko radio sa module managerom da mi kaze da li je ovo dobar nacin izrade jedon module managera ili postoji nesto mnogo lakse ili bolje...

Hvala
Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-3.sezampro.rs.



+33 Profil

icon Re: Module Manager ZF208.09.2013. u 10:08 - pre 128 meseci
Da, ZF2 po default-u baš i nije pogodan za takvu, dinamičku manipulaciju dodatnim modulima, jer zahteva da se direktno kroz app config, u ranoj fazi izvršavanja saopšti lista modula koje treba uključivati. Tako da, ta listu aktivnih modula, tj onih za koje želiš da budu uključeni, na ovaj ili onaj način, u krajnoj tački, moraju biti u tom modules nodu u konfiguraciji.

To pitanje vezi implementacije listinga modula, koji bi se servirali korisniku, tj administratoru, kroz neki panel je praktično svejedno, jer ti ćeš i dalje morati da osmisliš način kako da ostvariš vezu sa istim tim modules konfiguracionim nodom. Jer te dve stvari - logika za listu modula koji su dostupni i logika koja se bavi pitanjem koji su moduli aktivni, moraju na neki način biti odvojene, upravo iz zbog toga kako ZF2 funkcioniše.

Jedno od mogućih rešenja za taj momenat oko pitanja aktivacije modula, bi bilo da taj tvoj module manager manipuliše direktno tim fajlom, u smislu da čita/menja modules nod. To verovatno nije najidealnije iz razloga što onda taj app config ne bi mogao da verzionišeš, tj ne bi valjalo, jer će se njegov sadržaj menjati u runtime-u. U toj situaciji bi morao recimo da praviš neku .dist, default-nu varijantu tog fajla, koju bi naravno u produkciji duplirao u taj ne-dist, radni fajl.

Drugi način bi bio da probaš eventualno da izmeniš taj podrazumevani workflow, gde bi preformulisao onaj trigger pokretanja aplikacije u index.php:
Code:
Zend\Mvc\Application::init(require 'config/application.config.php')->run();

... na način da to ne bude samo require 'config/application.config.php', već npr. nešto tipa:
Code:
Zend\Mvc\Application::init(array_replace_recursive(require 'config/application.config.php', require 'config/modules.php'))->run();

... kako bi manipulacija i održavanje liste aktivnih modula mogla da se odvija nad tim nekim zasebnim fajlom.

U principu, postoji verovatno još dosta načina, nisam siguran koji bi bio najelegantiji, ali uglavnom, kao što sam već rekao, krajnji cilj je da nekako probaš da "utisneš" informacije o aktivnim modulima u tu modules listu.

 
Odgovor na temu

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
*.dynamic.sbb.rs.



+7 Profil

icon Re: Module Manager ZF208.09.2013. u 16:00 - pre 128 meseci
Cek ti si koliko se secam radi cms na ZF. Jel to bio zf1? Jel on isto zahtevao informisanje app config o novom modulu? I jesi ti imao tamo neki module manager?
Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.dynamic.sbb.rs.



+33 Profil

icon Re: Module Manager ZF209.09.2013. u 09:50 - pre 128 meseci
Jeste, samo što ZF1 nema veze sa ZF2. Tamo nema app config-a ovog tipa, nema definisanja liste module, vec postoji Zend_Application_Resource_Modules, zadužen za Bootstrap-ovanje modula. On radi tako što putem Zend_Controller_Front, od dispatch-era uzima listu registrovanih putanja modula, koje se definišu preko frontController moduleDirectory podešavanja, i onda bukvalno iterira sve module, instancira njihove Bootstrap.php, i time trigger-uje bootstrap-ovanje svakog od njih. Tu je onda bilo potrebno da se override-uje rad tog Modules app resursa, na način da bootstrap-ujem samo aktivne module, a listu tih aktivnih modula sam održavao putem isto tako nekog modules manager-a. Kažem, drugačija je situacija tamo skroz, jer u novoj verziji više uopšte nema Front kontrolera, ceo koncept je drastično izmenjen.

Inače, i ja sad pomalo u slobodno vreme radim na CMS-u, tačnije port-ujem taj postojeći na ZF2, jer on je baš loše napisan, davno sam to pravio, i više nisam ponosan na taj kôd.
 
Odgovor na temu

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
*.dynamic.sbb.rs.



+7 Profil

icon Re: Module Manager ZF209.09.2013. u 13:12 - pre 128 meseci
Pazi situaciju ja sam radio neke testove van ZF2 napravio sam app.cfg sa istim informacijama iz zf i ja sam to nekako uspeo da izmenim menjanjem datoteke sto je meni sve to nekako prljavo i deluje mi lose skroz ali elem radi.

Sledeca stavka template manager. Jedan glavni application modul koji je recimo front. Recimo ja ocu da napravim Template Manager. Sto bi se ja cimao kada mi neko na elance trazi eshop za nesto i posalje sliku dizajna. Sto bi se ja zezao da pisem sve iz pocetka kada mogu da napisem samo novi template i instaliram vec postojeci eshop modul.

Koliko vidim da postoji problem i sa ovim cudom. Sta je tu tacno template? Neka slika koju ja vidim da bi ja u Adminu dobio lisut svih instaliranih teplatea moram da imam nekoliko app modula. Mislim ne nije potrebno ceo app modul, posto sam application module je napravljen tako da u view ima layout sto bi trebalo da se menja i ostali view fajlovi.

Cek onda ispada da moj template je jedan view direktorijum koji sadrzi layout/..., application/index, error/... A sada i tu postoji pitanje i opet onaj isti problem kao i za app.config. Ako ja na primer imam sablone. Perin Template, Micin Template ja oba dva moram zveknem u app/view i da probam da izmajmunisem sa namespaces, kao sto je rekao Matthew Weier O'Phinney zasto je sve organizovano u deep folderima.

Mislim da meni ovo nije jasno uopste. Da li su oni to stvarno tako hteli ili nisu razmisljali o tome ili ja jos uvek ne znam dovoljno dobro za skoro god dana na zf2. Obrni okreni ja u template_manager moram oped da dodam (perin i micin) template.
Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.dynamic.sbb.rs.



+33 Profil

icon Re: Module Manager ZF209.09.2013. u 15:34 - pre 128 meseci
Probaj da i templejte/teme tretiraš kao module. Dakle kao jedan specijalan tip modula, koji može imati svoj Module.php, svoj module.config.php, moze imati view helper-e, a naravno i CSS, JS asset-e, layout i view skriptove. Upravo je zato dobar taj novi sistem modula u ZF2, iz razloga sto je modul sada jedna poptuno apstraktna stvar. Na taj nacin mozes da napraviš jednu potpuno pluggable priču i što se tiče tema, a ne samo modula, u smilu da će npr. samo tema koja je aktivna putem svoje konifiguracije registrovati putanju do layout skripta, ona će na definisati i view-ove za sve public stranice sajta, itd., itd. Dakle view skriptovi za te neke akcije za public stranice sajta se neće nalaziti npr. u tom Front modulu kako ga ti zoveš, već će biti u temi. To je još jedna dobra stvar u novom ZF-u, to što view skript više ne mora striktno da bude vezan za kontroler/akciju, i da se nalazi na onoj unapred definisanoj putanji.

Pogledaj recimo i kako je u Wordpress-u zamišljen taj koncept teme. WP tema ima skript za praktično svaki tip stranice, index.php, page.php, archive.php, itd. Dakle tema treba da bude ključna na view sloju, tema treba da definiše na koji način će se ispisivati neki sadržaj. Dakle probaj da razmišljaš na način da temu doživljavaš kao nešto što nisu isključivo phtml fajlovi, već da je u pitanju jedna bitna celina i bitan faktor u CMS-u.
 
Odgovor na temu

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
*.dynamic.sbb.rs.



+7 Profil

icon Re: Module Manager ZF210.09.2013. u 21:34 - pre 128 meseci
Da Nidzo ovo je bas dobra ideja. Svaki modul moze da bude i template, samo se razlikuje po strukturi a mogu to da odradim isto kao sto sam i odradio za shared module. Samo konfigurisem u app cfg novu putanju. Super ideja skroz...

E ajde kad smo krenuli da balavimo o ovome. Jesi radio mozda dodatnu komponentu za ZF?

Ovo sam odradio sve sto smo pricali do sada samo nisam dovrsio unit testove jer su mi dojadili pa cu to da ostavim za kasnije.

Pazi sta planiram, svidela mi se ideja kod joomle sto svaka komponenta, modul ima poseban toobar. Mislio sam da odradim komponentu za zf i da je povezem sa autoloaderom i da omogucim da svaka akcija ima svoj toolbar. Nesto slicno kao sto kreiras forme tako isto i toolbar.

Ja sam to pre radio rucno direktno u kontroller nesto ovako:

Code:
namespace Menu\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class MenuController extends AbstractActionController
{

    /**
     * Toolbar
     */
    public $toolbar = array();
    /**
     * Data
     */
    public $data = array();
    
    /**
     * Index Action
     * @see \Zend\Mvc\Controller\AbstractActionController::indexAction()
     */
    public function indexAction()
    {     
        $getToolbar = $this->toolbar(__METHOD__);
      
        /**
         * Render variables and template
         */   
        $viewModel = new ViewModel(array(
            'toolbar' => $getToolbar,       
        ));


$this->toolbar prop. je samo handler za toolbar, takodje na kraju klase uvek definisem dodatnu funkciju toolbar i pozovem je u metodi u kojoj zelim toolbar.

Npr u index action recimo to je neki page manager, tu zelim da imam ADD, EDIT, PUBLISH, UNPUBLISH, a npr u editAction imam samo save, cancel jer mi ne treba vise.

Zasto sam to teo da odradim, do jadilo mi da dodatno punim view za viskom html koda, ovo mi je super opalim samo jednu forach i ona izlista sve sto treba..

Eo funkcija za toolbar.

Code:
    /**
     * Set up toolbars
     * 
     * @return multitype:
     */
    public function toolbar($name)
    {
        switch ($name) {
            case 'Page\Controller\PageController::indexAction':
                // Set toolbar
               return $this->toolbar = array(
                   'add' => array('class' =>'add_icon32','action' =>'add','label' =>'Add'),
                   'edit' => array('class' =>'edit_icon32','action' =>'edit','label' =>'Edit'),
                   'delete' => array('class' =>'delete_icon32','action' =>'delete','label' =>'Delete'),
                );
                break;
        }
    }


I na kraju sa par linija ja izlistam dobar toolbar bez brdo HTML koda.
Code:

           <ul>
                <?php foreach ($toolbar as $item => $option) :?>
                    <li class="<?php echo $option['class']?>">
                        <a href="<?php echo $this->url('page', array('action'=>$option['action']));?>"><?php echo $option['label'];?>
                            <span class="<?php echo $option['class'];?>"></span>
                        </a>
                    </li>
                <?php endforeach;?>
            </ul>



Sta mislis o ovome? Nije da sam izmislio toplu vodu ali simpa zvuci sitnica

Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.rs.



+33 Profil

icon Re: Module Manager ZF211.09.2013. u 18:53 - pre 128 meseci
Citat:
alfa-pro: E ajde kad smo krenuli da balavimo o ovome. Jesi radio mozda dodatnu komponentu za ZF?

Za ZF 2 nisam.

Citat:
alfa-pro: Pazi sta planiram, svidela mi se ideja kod joomle sto svaka komponenta, modul ima poseban toobar. Mislio sam da odradim komponentu za zf i da je povezem sa autoloaderom i da omogucim da svaka akcija ima svoj toolbar. Nesto slicno kao sto kreiras forme tako isto i toolbar.

...

Sta mislis o ovome? Nije da sam izmislio toplu vodu ali simpa zvuci sitnica

Nisam te uopšte skontao šta ti tu radiš, i ne znam na šta tačno misliš, jer nikad nisam koristio Joomla-u.
 
Odgovor na temu

[es] :: PHP :: Module Manager ZF2

[ Pregleda: 2537 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.