Ik ben nu al een tijdje bezig te verdiepen in ZEND framework, en de mogelijkheden zijn enorm.
Alleen nu probeer ik een systeem op te zetten waarvoor ik template gebruik, verschillende talen wil, menu en Mysql database.
Hiervoor heeft ZEND alle mogelijkheden in huis alleen ik krijg het niet goed/ volledig/ netjes werkend.
Ik heb dus een layout die ik in de hele site wil gebruiken en de content word ingeladen via de modules. Dit heb ik slechts gedeeltelijk goed werkend. Als ik nu een pagina open de standaard index, dan word de template geladen en in het content gedeelte word de content van de view file die bij de actie hoort. Dit werkt zoals ik wil alleen zou ik dan wel in elke controller in de init een stuk code plaatsen waardoor de template gebruikt word en niet alleen het view file dat bij de actie hoort.
Opzich geen ramp maar dat moet volgend mij ergens in de bootstrap gezet kunnen worden dat de template standaard gebruikt word, maar dat krijg ik niet werkend.
Nu was ik verder gegaan met het uitzoeken voor de verschillende talen, alleen krijg ik hier niks van werkend. Ik kom er absoluut niet uit hoe ik dit werkend moet krijgen.
Nu hoop ik dat er iemand mogelijk een site heeft draaiend op ZEND framework, en daarin een template en verschillende talen. En indien mogelijk ook met menu en mysql database. Zodat ik eens kan kijken hoe het er uit moet komen te zien in de hoop dat ik dan wat verder kom.
Of als iemand nog ergens een goeie tutorial weet hoor ik het ook erg graag.
Alvast bedankt.
- ZEND framework
-
04-08-2009, 16:50 #1
- Berichten
- 415
- Lid sinds
- 17 Jaar
ZEND framework
-
In de schijnwerper
-
04-08-2009, 17:02 #2
- Berichten
- 613
- Lid sinds
- 19 Jaar
Ik denk dat je hiermee wel wat kunt, ik gebruik dit zelf in een plugin (heb hem nog wat uitgebreider, front- backend een andere layout).
Translate is ook nog verder uit te breiden met een cache (setCache()) en zo gebruik ik het in de views.
$this -> translate -> _('test');
Code:<?php protected $_view; protected function _initLayout() { $this -> layout = Zend_Layout::startMvc( array( 'layout' => 'layout', 'layoutPath' => APPLICATION_PATH . '/data/templates/layouts', 'contentKey' => 'content' ) ); $this -> _view = $this -> layout -> getView(); } protected function _initTranslation() { $this -> translate = null; foreach($this -> _config -> language -> translations as $locale => $translation) { if(is_object($this -> translate)) { $this -> translate -> addTranslation(APPLICATION_PATH . '/data/languages/' . $translation . '.csv', $locale); } else { $this -> translate = new Zend_Translate('csv', APPLICATION_PATH . '/data/languages/' . $translation . '.csv', $locale); } } $this -> locale = new Zend_Locale(); $this -> translate -> setLocale(($this -> translate -> isAvailable($this -> locale -> getLanguage())) ? $this -> translate -> getLocale() : $this -> _config -> language -> defaultLocale); $this -> _view -> translate = $this -> translate; }
-
04-08-2009, 18:19 #3
- Berichten
- 415
- Lid sinds
- 17 Jaar
Bedankt voor je hulp, ik heb dit nu in de bootstrap gezet en geinclude in het index bestand in de root en dit werkt (tot zo ver geprobeerd) erg goed.
Ik ga nu eens een begin leggen om verder te gaan aan de verschillende talen.
Aanvullend bericht:
Ik heb een probleempje met de vertalingen.
Ik heb nu in mijn index controller bestand dit staan in de init functie:
Code:$this->translate = new Zend_Translate('csv', '../application/views/languages/nl/index.csv', 'nl');
Notice: Undefined property: IndexController::$translate in /****/application/controllers/IndexController.php on line 21
Fatal error: Call to a member function _() on a non-object in /****/application/controllers/IndexController.php on line 21
Code:protected function _initTranslation() { $this->translate = new Zend_Translate('csv', '../application/views/languages/nl/index.csv', 'nl'); $this -> _view -> translate = $this -> translate; }
Laatst aangepast door Henk G. : 05-08-2009 om 17:00 Reden: Automatisch samengevoegd.
-
05-08-2009, 18:24 #4
- Berichten
- 613
- Lid sinds
- 19 Jaar
Wat staat er precies op lijn 21 van je IndexController?
$this -> _view staat ook ergens gedefinieerd ($this -> _view = $this -> layout -> getView()), zie de code hiervoor? Anders kun je de translate functie niet oproepen via $this -> translate -> _().
-
05-08-2009, 18:45 #5
- Berichten
- 415
- Lid sinds
- 17 Jaar
Mijn volledige bootstrap ziet er zo uit:
PHP Code:<?php
class Bootstrap
{
protected $_view;
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Default',
'basePath' => dirname(__FILE__),
));
return $autoloader;
}
protected function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->doctype('XHTML1_STRICT');
}
//Functie voor het standaard inladen van de layout
protected function _initLayout()
{
$this -> layout = Zend_Layout::startMvc(
array(
'layout' => 'layout',
'layoutPath' => APPLICATION_PATH . '/application/views/scripts',
)
);
$this -> _view = $this -> layout -> getView();
}
//Functie voor het ondersteunen van verschillende talen
protected function _initTranslation()
{
$this->translate = new Zend_Translate('csv', APPLICATION_PATH . '/application/views/languages/nl/index.csv', 'nl');
$this -> _view -> translate = $this -> translate;
}
}
PHP Code:<?php
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$this->view->tekst = $this->translate->_('test');
$this->render();
}
}Laatst aangepast door Henk G. : 05-08-2009 om 18:46 Reden: Bootstrap was verkeerd
-
05-08-2009, 19:10 #6
- Berichten
- 613
- Lid sinds
- 19 Jaar
In je controller moet je $this -> view -> translate -> _(); gebruiken en in je view $this -> translate -> _(); Nu zou het moeten werken, zie verder niks verkeerds.
-
05-08-2009, 19:29 #7
- Berichten
- 415
- Lid sinds
- 17 Jaar
Als ik dat doe krijg ik de volgende foutmelding:
Fatal error: Call to a member function _() on a non-object in /home/a8906044/application/controllers/TestController.php on line 8
-
05-08-2009, 19:39 #8
- Berichten
- 613
- Lid sinds
- 19 Jaar
Vreemd zo gebruik ik hem, enige verschil wat ik zo zie is dat ik hem in een plugin heb staan (layout, translation) en jij in de bootstrap.
$this -> render() is trouwens overbodig of je moet een andere file willen inladen.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic