Categorie: Zend Framework

Zend Framework Per-module op basis van de instellingen

Door , vrijdag 1 januari 2010 22:40

Ik heb een follow-up op dit bericht die minder configuratie vereist gemaakt, zie Module Based Layout - Zend Framework .

Bij gebruik van de Zend Framework met modules, haar duidelijk dat als u gebruik maakt van diverse (sub-) sites buiten de dezelfde toepassing die u niet per se hetzelfde willen lay-out scripts voor elk onderdeel. Ik besloot om te gaan met de volgende site structuur:

  / Toepassing
     / Controllers
         ...
     / Modellen
     / Modules
         / Default
             / Controllers
             / Lay-out
                 / Scripts
             / Uitzicht
                 / Scripts
         / AnotherModule
             ...
     / Scripts

Het probleem was het opzetten van de lay-out scripts op een per-module basis. Het antwoord kwam door het gebruik van een Action Helper. Het instellen van de lay-outs op een per-module basis bestaat uit drie stappen:

  1. Application.ini (of soortgelijke configuratie setup):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouts / scripts"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouts / scripts"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / member / layouts / scripts"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / layouts / scripts" 
  2. Maak je Actie Helper:
      <? Php
     / **
      * Stelt de lay-out pad op een per-module basis
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Sinds 2010-01-01
      * /
     klasse Pro_Controller_Action_Helper_SetLayoutPath
         breidt Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Stelt lay-out pad op basis van module
          * /
         publieke functie preDispatch ()
         {
        	 Module = $ $ this-> GetRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg ('bootstrap')) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (isset ($ config [$ module] ['resources'] ['layout'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  $ Config [$ module] ['resources'] ['layout'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ('lay-out')
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. En tot slot boostrap de actie helper:
      ...
         / **
          * Stelt lay-out scripts op een per-module basis
          * /
         beschermde functie _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap ('frontController');
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         nieuw Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Doctrine: DATETIME default NOW ()

Door , woensdag 30 december 2009 18:30

Ik heb moeite met het opzetten van een database schema voor een nieuw Zend Framework project. Ik ben gebruik probeert te gebruiken Doctrine ORM voor mijn database modellen. Ik moet het opzetten van het schema, zodat het me toegestaan ​​om een ​​standaard datum en tijd instellen voor een `datetime` kolom, bijvoorbeeld bij het toevoegen van een nieuw bericht krijg ik de huidige tijd. Na veel zoeken en experimenteren vond ik de oplossing dus ik ben te delen.

In je schema YAML bestand gewoon het volgende doen:

 Bericht:
   actAs:
     Timestampable:
       gemaakt:
         naam: created_at
         type: timestamp
         formaat: JMD H: i: s
       bijgewerkt:
         naam: last_updated
         type: timestamp
         formaat: JMD H: i: s
   kolommen:
     id:
       type: integer
       primair: true
       autoincrement: true
     Naam: string (255)
     e-mail: string (300)
     bericht: string (2000)

Als aan de andere kant heb je niet wilt dat een `updated_at` kolom kunt u gebruik maken van de volgende:

 Bericht:
   actAs:
     Timestampable:
       gemaakt:
         naam: created_at
         type: timestamp
         formaat: JMD H: i: s
       bijgewerkt:
         met een handicap: true
   kolommen:
     id:
       type: integer
       primair: true
       autoincrement: true
     Naam: string (255)
     e-mail: string (300)
     bericht: string (2000)

Zend Framework: Fundamentals - Review

Door , zaterdag 28 november 2009 22:42

Mijn werkgever onlangs betaald voor een groep van ons ontwikkelaars in staat om het te nemen Zend Framework: Fundamentals cursus, hier zal ik mijn gedachten en meningen samen te vatten op de cursus voor anderen. Voor wie op zoek is om tijd te besparen, hier is mijn samenvatting:

Voor ontwikkelaars die hebben niet de tijd gehad om te kijken naar het Zend Framework deze cursus (Zend Framework: Fundamentals) biedt een goed beeld van het kader tot invoering van u naar de belangrijkste gebieden en het geven van voldoende informatie om verder te gaan. Voor degenen die tijd doorgebracht te kijken naar het kader en gevolgd hebben een of twee tutorials deze cursus biedt niet veel verder.

Achtergrond

Ik heb een PHP- ontwikkelaar voor ongeveer 5-6 jaar, en zijn begonnen te werken met het Zend Framework op een component basis over de laatste 6 maanden. Ik heb ontwikkeld en / of is een ontwikkelaar op een paar kleine Zend Framework MVC- sites. Ik zal eerlijk zijn, ik heb niet had een enorme hoeveelheid blootstelling aan andere kaders uit een codering oogpunt, maar hebben gedurende een aantal uur het onderzoeken van het project websites en evalueren them. Het kader en de omringende gemeenschap Zend Framework is het heel spannend en lijken er enorme mogelijkheden in waar zijn gaan.

Over de cursus

De cursus wordt geleverd over 9 twee uur WebEx sessies (met een 10-minuten pauze in het midden). De tijd wordt besteed gaat door een reeks dia's door Zend met discussie op elk moment. U kunt gebruik maken van een microfoon om te praten met de instructeur, maar om eerlijk te zijn ik zag niemand gebruik van iets meer dan het chatvenster. Naast een VMWare Ubuntu machine is op voorwaarde dat heeft bijvoorbeeld code en projecten het opzetten van een een trial versie van Zend Studio. De cursus leider praat met de deelnemers, hetzij via een geïntegreerde VoIP-oplossing, of u kunt bellen in het gebruik van een van de vele wereldwijde inbelnummers.

Tijdens de cursus het materiaal bestaat uit een kort overzicht van het kader en de MVC patroon voordat je in een monster gastenboek applicatie. De discussie toonde bootstrapping, Zend_Application, Db Tafels, database toegang, Forms, Filtering, ACL, valideren, etc, etc. In principe over alle onderwerpen je zou nodig heeft om een ​​basis site up een lopen de hele tijd te krijgen waardoor u de tools om gaan en meer gevorderd in het kader (hoewel dit bedrag deed om 'Zie de website' een groot deel van de tijd).

De tijd wordt gegeven om code op een aantal voorbeelden, en om de 'gastenboek' en eenvoudige 'wiki' applicatie te ontwikkelen. Persoonlijk heb ik het gevoel dat het verstrekken van de code of elke applicatie en dan vragen ons te ontwikkelen wat in wezen een kopie naast niet echt een goede leerervaring. Ik had liever een applicatie soortgelijke ontwikkelen, maar niet identiek. naar het voorbeeld applicatie met het voordeel van het hebben van een gids om te verwijzen naar. Alternatively het bouwen van de applicaties van de grond af met de demonstrator zou van possibly geleid tot meer vragen over hoe en waarom, waardoor een beter begrip van het kader, na alles wat je kunt opzoeken specifieke na de cursus.

De laatste lezing bestond uit het werken aan de wiki applicatie met de hulp / begeleiding van de instructeur. Na de cursus feedback werd genomen, werd hij meerdere malen benadrukt door middel van de cursus die Zend neemt feedback zeer serieus, in feite blijkbaar onze versie van de cursus was vrij nieuw. Enkele van de andere ontwikkelaars in het bedrijf zal nemen de cursus binnenkort dus het zal interessant zijn om te zien of dit is gebeurd.

De cursus stijl was informeel, toegestaan ​​voor feedback en samenwerking tussen de deelnemers en de instructeur. De cursus leider vriendelijk was, toegankelijk (e-mailadressen werden gedeeld voor vragen), en terwijl zijn presentatie van de dia's was een beetje wankel leek volledig bevoegd in het kader. Hij was duidelijk iemand die het kader gebruikt op een regelmatige basis in plaats van iemand die is geleerd om de cursus te leren, ik vond de 'echte wereld' ervaring in dat opzicht.

Overall Feeling

In sommige opzichten vond ik het natuurlijk een verspilling van tijd, in andere gevallen was erg handig. Hopelijk krijg ik mijn redenen duidelijk overkomt, en misschien bieden enige stof tot nadenken of nuttige feedback (dat me dit onwaarschijnlijk is!).

Voor mezelf deze cursus was gericht op een te laag niveau. Na gegaan door de quickstart handleiding, lees Rob Allen Zend Framework in Action, en werkte met het kader een beetje heb ik niet echt iets te veel. Ik zou graag van de cursus op te pikken van het einde van de quickstart en de ontwikkeling van extra vaardigheden.

Dat gezegd hebbende, de cursus titel is duidelijk "Zend Framework: Fundamentals" en in dat aspect de cursus bereikt wat het geeft om te doen. Andere leden van het ontwikkelteam dat niet heb de tijd aan het zoeken in het kader afgewerkt elke sessie met enthousiasme en vragen, die was echt leuk om te zien.

Alles was niet verloren, het goed was om tijd te besteden bevestiging van de basisgegevens van het kader en een aantal vragen in gebieden waar ik was niet 100% te vragen te krijgen. Het was ook tijd dat ik moet gaan zitten elke dag en over het coderen met behulp van het kader en de toekomstige projecten, iets wat ik niet zou van kunnen anders te doen (kan je je voorstellen dat uw bedrijf te stemmen met dat?:) Denken). Last but not least krijg je ook een mooi certificaat van Zend te zeggen dat je de cursus (zij het via e-mail) bijgewoond.

Zend Framework Certificatie

Dit was een vraag die bleven komen voor de geest tijdens de cursus, dan zou het me voor te bereiden voor de certificering? De snelle, makkelijke is een klinkende No. De cursus instructeur was heel duidelijk dat met de extra advies dat voor de certificering die je echt moet het kader worden gebruikt op een dagelijkse basis en voelt zeer comfortabel en vertrouwen in het gebruik ervan en methodieken.

Overzicht

Gezien alles wat ik hierboven heb geschreven, zal ik samenvatten alles in twee eenvoudige bullet points:

  • Nieuw bij Zend Framework: Deze cursus doet precies wat je zou verwachten, het geeft je een mooie introductie in het kader en een goede aarding aan de basis van waaruit je kunt bouwen. De cursus lijkt te genereren belangstelling en het enthousiasme voor het kader onder de ontwikkelaars.
  • Gebruikt het Zend Framework: Hoewel het was leuk om de wal een deel van de zeer basics voelde ik de tijd, moeite en middelen om het verloop van kon beter geweest elders besteed te nemen. Het zal leuk zijn om SEEA Zend een nieuw hoger niveau natuurlijk ontwikkelaars te nemen naar het volgende niveau -. Ten minste tot het niveau van certificering en daarbuiten Voor dat ik meteen zou aanmelden.

Log naar DB met behulp van Zend Framework

Door , dinsdag 14 april 2009 21:06

Ik ben erin geslaagd om een site up and running met het Zend Framework , alles is netjes te loggen om FireBug / FirePHP zodat volgende stap was om in te loggen op de DB. Ik wilde ook enige aanvullende informatie met behulp van het kader, zoals user-agent, datum en tijd, GET en POST variabelen log. Dus om de handleiding een beetje hier is wat ik gedaan heb uit te breiden:

// Set up logging to DB
$db = Zend_Registry ::get('dbAdapters');
$db = $db['general'];

$ ColumnMapping = array ('prioriteit' => 'prioriteit ",
'Message' => 'boodschap',
'Datetime' => 'tijdstempel',
'User_agent' => 'user_agent',
'Get_vars' => 'get_vars',
'Post_vars' => 'post_vars',
'Site' => 'site'
);

$ WriterDb = new Zend_Log_Writer_Db ($ db, "error_logging ', $ columnMapping);
$ Logger = new Zend_Log ($ writerDb);

$ Logger-> setEventItem ("datetime", de datum ("JMD H: i: s '));
$ Logger-> setEventItem ('user_agent', $ _SERVER ['HTTP_USER_AGENT']);
$ Logger-> setEventItem ('get_vars', print_r ($ _GET, true));
$ Logger-> setEventItem ('post_vars', print_r ($ _POST, true));
$ Logger-> setEventItem ('site', SITE);

$ Logger-> info ('Informatief bericht');

Wanneer de array keys in $ columnMapping zijn mijn column namen. 'Prioriteit' en 'bericht' worden begrepen door Zend_Log_Writers , maar de extra velden zijn toegevoegd aan geef me wat aanvullende informatie.

Uiteraard is dit ervan uitgegaan dat u werkt te loggen met behulp van een van de andere schrijvers eerst:)













Panorama Thema door Themocracy

8 bezoekers nu online
7 gasten, 1 bots, 0 leden
Max bezoekers vandaag: 16 om 02:02 UTC
Deze maand: 16 op 01-09-2011 02:02 GMT
Dit jaar: 130 op 28-03-2011 22:40 GMT
All time: 130 op 28-03-2011 22:40 GMT