Newsgroup: it.comp.www.php
Titolo: Zend Framework: personalizzare struttura e views

Salve,
Visto che siamo vicini alla versione 1.0, mi sto studiando un po' lo Zend 
Framework, eventualmente per usarlo per un progetto che sto per iniziare.
Non so se ci sia qualcuno qui che lo usa gia`, ma eventualmente vorrei 
avere un'opinione su alcuni problemi che magari sono gia` stati risolti.
1- Come avete integrato il MVC con un normale sito fatto di header, menu 
laterali, footer e contenuto? Mi spiego: di base, ogni Action dovrebbe 
caricare una view, popolarla e visualizzarla. Mi pare abbastanza assurdo 
che tutte le View contengano la struttura completa del sito, e pensavo di 
mettere solo il <div> del contenuto, per esempio, e trovare un sistema per 
caricare intorno tutto il resto.
Per esempio, se ho un sito con una pagina prodotti e una contact, 
potrebbero esserci header e footer in comune, ma magari il menu va 
caricato con le sottocategorie prodotti per la pagina prodotti, e liscio 
per la pagina contact. Ma magari nella pagina contact deve esserci un box 
(non presente su quella prodotti) con la lista delle filiali contattabili.
2- Derivato da quello sopra. Se volessi "temizzare" il sito, come prendere 
le View da directory diverse in base a quale tema seleziono?
3- Modularizzare tutto: Ho visto nel manuale che spiega come mantenere una 
struttura tipo
base/
  controllers/
    IndexController.php
  views/
    IndexView.php
blog/
  controllers/
    BlogController.php
  views/
    BlogView.php
eccetera eccetera.
Ma imposta a mano tutti i vari path di ricerca, e nei vari controller usa 
ogni volta dirname(__FILE__) per trovare la directory views del modulo.
Ho la sensazione che si deva essere un modo automatizzato per farlo.
Per ora sto estendendo Zend_Controller_Front per fare un parse di una 
directory che usa quella struttura, in modo da registrare i vari "moduli" 
col controller, ma non so se e` il modo piu` efficiente di procedere. In 
particolare, mi sa di spreco registrare TUTTO a ogni page-request, e mi 
interessava sapere se c'e` un modo per fargli fare il test di esistenza 
del modulo alla richiesta, per esempio. Bisogna per forza scriversi un 
Front_Controller completamente personalizzato?
Per ora mi fermo.
Anche se non sapete rispondere alle domande qui sopra, mi piacerebbe 
sapere se c'e` qualcuno che usa questo framework, giusto per sapere se si 
puo` scambiare qualche opinione o se sono solo nella mia avventura. :)
Bye.

 puo` scambiare qualche opinione o se sono solo nella mia avventura. :)
Per quel che mi riguarda, assolutamente solo.
Ho sbattuto la testa con cakephp quando era ancora in beta e quindi non  
stabile e ora ho poca voglia di rimetterci il naso.
(e aveva limitazioni assurde, come naming conventions determinate da un  
inflector singolare/plurale inglese)
Mi era venuta voglia di provare codeIgniter dopo che un mio amico ci ha  
sviluppato sopra rapyd (
http://www.rapyd.com
). Ma dopo i primi passi già  
ho rinunciato e sono tornato a svilupparmi il mio piccolo mvc personale.
Usare il mio è molto piu' lento e tante cose ancora non sono a posto  
(manco ancora di un file di configurazione, manco di un layer db decente,  
il form helper lo sto iniziando solo ora etc), ma preferisco ore di  
sviluppo che ad ore di ricerca nella documentazione.
Tac
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/mail/

 Bye.
ciauz, e scusa il quoting integrale (seppur spezzato)
-- 
punkarruso

 ore di sviluppo che ad ore di ricerca nella documentazione.
un tempo la pensavo così anch'io. il fatto è che quando ti sei fatto la 
pellaccia su un framework come questi (almeno dopo un paio di sviluppi 
completi di applicazioni), poi l' Application Developement diventa 
veramente Rapid...
ed un framework con una base di sviluppatori così importante fa tanto, 
specialmente se non ti fai il blog personale ma una applicazione di 
livello enterprise...
saluts
-- 
punkarruso

 livello enterprise...
Credo che volendo sottostare ad un periodo di apprendimento per poi andare  
rapid-rapid userei Drupal (che non ho mai provato, ci ho solo dato  
un'occhiatina) o qualche cms/framework.
Tra le altre cose di "enterprise" (zend in primis) si riempiono la bocca  
tutti, ma io di applicazioni così enterprise non ne ho viste mica tante.


 ore di sviluppo che ad ore di ricerca nella documentazione.
Anche io mi stavo sviluppando un fw in casa, ma ero partito dalla parte 
opposta: prima singleton per la config, quindi astrazione del DB (che e` 
in continua mutazione... :), poi form helper. Stavo valutando i vari 
framework anche per vedere come avevano risolto il "problema" (M)VC. Io, 
finora, anche per facilitare gli HTML-isti, usavo come punto di entrata la 
View, e non il controller (che veniva richiamato dalla View, quindi).
Poi mi sono accorto che ci sono un sacco di componenti che possono tornare 
utili: pdf, mail, webservices, ecc. Quindi ci ho fatto un pensierino ad 
usarlo.
Grazie per i pareri. :)
Bye.

 "osservando" per capire se perderci tempo...
Io finche` non scrivo codice non capisco come funziona. Mi sono letto una 
decina di tutorial e non ci avevo ancora capito niente.
Ne ho seguito uno, modificandolo e cercando di capire cosa voleva fare, 
invece di come lo faceva, e ci ho capito di piu` in 3 ore cosi` che in una 
settimana di lettura... :/
Ma secondo me la comunita` e` ancora troppo piccola, e produce poca 
documentazione utile, complice il fatto che quella ufficiale e` molto 
scarsa.
Perfino i forum ufficiali sono deserti.
Mi stavo chiedendo se non ho fatto la scelta sbagliata... :)
Poi mi viene in mente che i libri su symfony e cake sono usciti dopo la 
prima stable, e quello su Drupal dopo la 5.1 e mi torna l'ottimismo. :)
Bye.

 qualcosa che non e` Java.
Probabilmente perchè oramai sono partner commerciali.
http://www.zend.com/products/zend_core/zend_core_for_ibm/
Ciao


 prima stable, e quello su Drupal dopo la 5.1 e mi torna l'ottimismo. :)
Ciao, mi infilo nella discussione perché ho alcune domande da farvi,
vista la vostra esperienza con diversi framework.
Intanto una premessa: fino a due giorni fa, avevo "solo" intenzione di
rifare la intranet aziendale (poca roba, per ora), per prendere
manualità con un framework ed imparare qualcosa di nuovo.
Ho acquistato su Amazon "The definitive guide to Symfony" e "Pro
Drupal Development". Qualcosa di php ci capisco, ma il modello MVC è
roba nuova. Drupal mi è sempre piaciuto, e con la versione 5 trovo che
abbiano fatto grossi passi in avanti, rispetto alla 4.6 che ricordavo.
Poi venerdì il Capo mi ha detto esplicitamente che vuole avere nella
intranet tutte le applicazioni attualmente sviluppate in Access (una
decina, che vanno dal supporto al marketing, alla contabilità,
gestione clienti, ed altre amenità). Probabilmente non solo nella sua
azienda, ma anche in altre quattro (o più) "gemelle".
A questo punto devo capire bene su cosa conviene investire in termini
di linguaggi, piattaforme, risorse (sono solo un mezzo sviluppatore,
una cosa del genere richiede mani più esperte delle mie, per avere
tempi di sviluppo accettabili), e quant'altro.
Punterei sul linguaggio PHP perché più o meno lo conosco e ci ho fatto
qualcosa, ma non so nemmeno quanto possa essere adatta la scelta.
Altri ambienti (Java e i suoi application server, Python, etc. etc.
non li conosco proprio).
I framework PHP che avete provato, od utilizzato finora (anche Drupal
lo considero un framework), fino a che punto possono essere adatti a
sviluppare applicazioni diverse dal "sito web"?
Per quel po' che ho visto finora, forse Drupal sarebbe sufficiente per
fare ciò che mi serve, ma mi piacerebbe avere qualche opinione da
parte vostra.
grazie,
Panathos

Alessandro Pellizzari ha scritto:

Mi intrometto anch'io, è giusto qualche giorno che spulcio tra cake 
simfony Ignite ecc...
Domanda: c'è qualcuno di questi framework che abbia tools specifici per 
lo sviluppo con db Oracle?
-- 
-------------------------------------------
Paolo De Dionigi
www.atfriends.net
Responsabile Tecnico Zen Cart Italia

 pensavo fosse piu' leggero.
Di suo e` abbastanza leggero. Si appesantisce quando inizi ad aggiungere
moduli. Poi dipende anche dalla potenza della macchina. La mia e` un
Athlon 1000, e ci gira PHP5 come CGI dietro SuPHP, quindi le prestazioni
non sono proprio il massimo, anzi.
Tra poco la aggiorno alla debian etch per poter mettere eaccelerator e
penso migliorera` abbastanza la situazione. In locale ho visto aumenti di
5-30 volte nelle prestazioni.
 
Comunque uso drupal perche` mi sembra il migliore nel suo campo: buone
prestazioni e ottima personalizzabilita`.
Bye.

 lo sviluppo con db Oracle?
Per quello che ho visto io, zend usa PDO (devi avere PHP 5.2 o il 5.1 e
installare PDO da PECL), e PDO mi pare supporti Oracle, quindi si`.
CodeIgniter non l'ho approfondito, ma nei forum parlano di un
oci8_driver.php, quindi presumo lo supporti.
Gli altri non ho controllato.
Bye.

 parte vostra.
Drupal e` molto legato a utenti (con relativi permessi di accesso) e tipi
di contenuti. Ho trovato molto complicato, per esempio, granularizzare i
permessi. Un utente (di base) ha o non ha il permesso di aggiungere pagine
a un qualsiasi, non puoi dirgli "puo` aggiungere pagine al libro solo
nella categoria X e puo` modificarle nelle categorie Y e Z. Non puo` fare
niente nelle altre categorie, nemmeno vederli". C'e` un modulo esterno per
farlo (taxonomy-access), ma e` incompatibile, per esempio, con Organic
Groups (che implementa un sistema di accessi leggermente diverso per dare
accesso ai contenuti di un gruppo solo agli iscritti al gruppo).
In pratica, devi valutare bene se le limitazioni di un CMS fatto e finito
(per quanto con tendenze al framework) vanno bene per quello che vuoi fare.
Un framework ti da` sicuramente piu` liberta da questo punto di vista.
Bye.

 Un framework ti da` sicuramente piu` liberta da questo punto di vista.
Sì ma questa maggiore libertà, almeno per quanto visto finora, si
"paga" con lo scotto di dover costruire proprio tutto da zero;
compresi i layout dell'applicazione, i CSS, e quant'altro.
Ed a me, per una intranet, il tema "Garland" magari con poche
modifiche ai colori, così come è strutturato, andrebbe benissimo
(anche perché mi piace molto esteticamente).
Un webmaster difficilmente andrebbe ad usare il tema base :-D
Un'altra cosa che mi sovviene, è il fatto che con Drupal si fa presto
ad integrare elegantemente il "lato admin" con i settaggi dei moduli.
Con symfony ci devo ancora arrivare e ho un sacco di dubbi.
Purtroppo devo rendere user-friendly anche la configurazione di molte
cose senza "costringere" la gente a mettere mano al codice o a
modificare file YAML.
Io poi ho tanti dubbi ma magari se prendo confidenza col modo di
ragionare di symfony ne divento entusiasta. Non credo sia un caso che
chi lo usa sul serio dice che è veramente "RAD" e ne è contento.
ciao,
Panathos

 
Io dopo tanti tentennamenti e sbirciate nei vari framework ho deciso di
usare CakePHP e l'ho adottato per un'applicazione web di discrete
dimensioni.
Per un paio di mesi mi sono chiesto se avevo fatto male ad abbandonare
l'approccio basato sul mio "personal framework" + PEAR, fino a quando mi
è stato commissionato una piccola applicazione che ho realizzato con
Cake in 8 ore (con mia meraviglia) a fronte dei 5 giorni che avevo
preventivato con il vecchio approccio.
Quindi credo che la grande padronanza del fw permetta di renderlo
veramente RAD e la curva di apprendimento è un elemento determinante
nella sua scelta.
Il mio progetto di discrete dimensioni continua a crescere e traggo
benefici dall'approccio MVC nell'aggiungere e gestire nuovi moduli e
anche da quei meccanismi (tipo il nome dei modelli e delle tabelle) che
sembrano assurdamente restrittivi, ma che una volta adottati ti rendono
più semplice e  notevolmente  veloce la fase di sviluppo.
Questa è la mia personale esperienza.
Ciao,
Luigi

 "paga" con lo scotto di dover costruire proprio tutto da zero;
Beh, si`. :)
Per questo dicevo che devi valutare cosa ti serve.
Astraendo, usare Drupal e` come avere l'auto quasi pronta, e decidere solo
le gomme da usare, i rapporti del cambio e il tipo di benzina. Un
framework e` piu` o meno come avere il ferro, i bulloni, gli ingranaggi, e
doverli mettere insieme nel modo giusto.
Bye.

 Bye.
ciauz
--
punkarruso

 Questa è la mia personale esperienza.
Grazie per averla riportata. Cercherò di valutare anche CakePHP, tanto
finché non metto le mani su un thin client non ho intenzione di
prendere decisioni che potrebbero rivelarsi errate.
ciao,
Panathos

 doverli mettere insieme nel modo giusto.
Tendenzialmente, vista la mole di lavoro, opterei per la prima :-D
Anzi, alla fine è meglio che cerchi di ottenere un budget per avere un
collaboratore più avvezzo di me a questo tipo di cose. Anche perché la
pretesa sarebbe di avere il tutto funzionante in DUE MESI.
Ci troverei da ridere, se non toccasse proprio a me tirare su il
tutto.
ciao,
Panathos

 tutti, ma io di applicazioni così enterprise non ne ho viste mica tante.
In effetti nemmeno io. E pure gli esempi e tutorial che ho trovato in
giro alla fine illustrano come realizzare cose tutto sommato banali.
Non che stia considerando banale fare un blog, ma alla fine negli
esempi si tratta sempre di form con max quattro o cinque campi che
nemmeno interagiscono fra loro... vorrei essere convinto
dell'"enterprise" mentre sono guidato a realizzare una pagina con form
di una cinquantina di elementi, che mutualmente modificabili tramite
ajax.
ciao,
Panathos



Mah, insomma, non è solo questione di interfaccia, cmq ti dò ragione.
In genere questi framework offrono la possibilità di costruire  
applicazioni un minimo piu' robuste (vedi filtering sul request e le  
classi custom sulle sessioni di code igniter e cake), ma di applicazioni  
complesse a livello di transazioni/base dati, appunto, neanche l'ombra.
Stringi stringi è tutta pubblicità.


 eggià, ci andrebbe un libretto fatto bene. che dici, ci proviamo noi?
Skippo il resto che sto per perdere il treno... :)
Magari rispondo con calma domani.
L'idea del libretto non e` male, ma io ho il difetto di voler capire a
fondo l'argomento prima di iniziare a parlarne in dettaglio, quindi dammi
qualche giorno che faccio un po' di esperimenti.
Bye.

 D)
L'applicazione gira su una intranet e non è consultabile.
Comunque in poche parole è un'applicazione che oltra a gestire i
contenuti per il sito web, gestisce tutta l'attività di una redazione,
contatti, immagini, link, documenti, permessi....
Comuqnue se sei intenzionato a usare CakePHP sarò felice di metterti a
conoscenza  di quanto ho sperimentato...
Ciao,
Luigi

 conoscenza  di quanto ho sperimentato...
Ti ringrazio tantissimo. Io sarei intenzionato a usare Drupal, in
parte per motivi già detti e poi perché sto leggendo un libro sullo
sviluppo con esso, e quantomeno capisco ciò che c'è scritto :-D
Inoltre ho visto proprio stamattina che fra i moduli per Drupal ce n'è
uno che promette qualche sorta di integrazione con CakePHP.
I miei dubbi riguardano più che altro il fatto che devo rifare
applicazioni Access costruite con interfacce non proprio semplici, e
non ho ancora capito quanto (e a quale "costo") si può riuscire a
sfruttare ajax per avere la dinamicità degli "eventi" di Access.
E cmq il fattore vincolante è sapere anche quanto "javascript" reggono
i thin client citrix che dovrò utilizzare. Intanto ringrazio vivamente
per la gentile offerta :-)
ciao,
Panathos