Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Pierwsze kroki z Zend Framework

Tworzymy widok

Komponent odpowiedzialny za widok w Zend Framework nazywa się Zend_View. Pozwala on oddzieliś kod widoku od kodu akcji.

Proste zastosowanie Zend_View:

$view = new Zend_View();
$view->setScriptPath('/path/to/view_files');
echo $view->render('view.php');

Jak doskonale widać na powyższym przykładzie, kiedy wstawimy taki szkielet do każdej z akcji, powtarzać będziemy kod uruchamiający widok, w związku z czym nie ma sensu używać akcji. My jednak wolelibyśmy ustawić kod uruchamiający widok w innym miejscu, niż samą akcję, a następnie wywoływać ten kod z akcji.

Projektanci Zend Framework przewidzieli taki problem i zastosowali rejestr w naszym pliku startującym ( zf-tutorial/index.php):

...
Zend::loadClass('Zend_Controller_Front');
Zend::loadClass('Zend_Controller_RewriteRouter');
/////////////////////////////////////////////
Zend::loadClass('Zend_View');
// Rejestrujemy widok którego będziemy używać
$view = new Zend_View();
$view->setScriptPath('./application/views');
Zend::register('view', $view);
////////////////////////////////////////////
// Kontroler
$route = new Zend_Controller_RewriteRouter();
$controller = Zend_Controller_Front::getInstance();...

Zmiany w tym pliku zostały pogrubione i powinny być oczywiste. Proszę zauważyć, że najpierw ładujemy klasę Zend_View za pomocą Zend::loadClass(), zanim nie stworzymy jej objektu i ustalimy scieżki do katalogu z widokami.

Po zarejstrowaniu widoku w rejestrze, powinniśmy użyć go w akcjach oraz przenieść nasz kod testowy wyświetlający komunikat do plików widoku.

W pliku IndexController nanieś następujące zmiany (na listingu zostały one pogrubione):

<?php
class IndexController extends Zend_Controller_Action
{
    function indexAction()
    {
        /////////////////////////////////////////
        $view = Zend::registry('view');
        $view->title = "My Albums";
        /////////////////////////////////////////
        echo $view->render('indexIndex.tpl.php');
    }

    function addAction()
    {
        $view = Zend::registry('view');
        $view->title = "Add New Album";
        echo $view->render('indexAdd.tpl.php');
    }

    function editAction()
    {
        $view = Zend::registry('view');
        $view->title = "Edit Album";
        echo $view->render('indexEdit.tpl.php');
    }

    function deleteAction()
    {
        $view = Zend::registry('view');
        $view->title = "Delete Album";
        echo $view->render('indexDelete.tpl.php');
    }
}

W każdej funkcji ładujemy obiekt widoku z rejestru oraz przypisujemy zmienną z tytułem strony. Następnie wyświetlamy poprawny wygląd strony. Oczywiście potrzebujemy czterech plików widoku dla naszej aplikacji. Pliki te znane są jako szablony. Ja każdy plik szablonowy nazwałem podobnie, jak odpowiadającą mu akcję oraz użyłem rozszerzenia .tpl.php, by łatwo rozpoznać, że to jest właśnie plik szablonu.

zf-tutorial/application/views/indexIndex.tpl.php

<html>
<head>
<title><?php echo $this->escape($this->title); ?></title>
</head>
<body>
<h1><?php echo $this->escape($this->title); ?></h1>
</body>
</html>

zf-tutorial/application/views/indexAdd.tpl.php

<html>
<head>
<title><?php echo $this->escape($this->title); ?></title>
</head>
<body>
<h1><?php echo $this->escape($this->title); ?></h1>
</body>
</html>

zf-tutorial/application/views/indexEdit.tpl.php

<html>
<head>
<title><?php echo $this->escape($this->title); ?></title>
</head>
<body>
<h1><?php echo $this->escape($this->title); ?></h1>
</body>
</html>

zf-tutorial/application/views/indexDelete.tpl.php

<html>
<head>
<title><?php echo $this->escape($this->title); ?></title>
</head>
<body>
<h1><?php echo $this->escape($this->title); ?></h1>
</body>
</html>

Po przetestowaniu każdego z kontroler/akcja powinniśmy zobaczyć nasze cztery pogrubione tytuły.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (7)
Proponuję alternatywę
Wtorek 09 Luty 2010 1:23:49 pm - siema1980

Proponuję zapoznać się z moim kursem na temat ZF, jest to blog na temat podstaw i myślę, że wszystkim początkującym się przyda - szczególnie tym którzy nie wiedzą jak w ogóle postawić pierwsze kroki w używaniu tej technologii.

http://zend-framework.web-portals.pl

Zapraszam serdecznie.

Zmiany w stosunku do ZF 1.0
Sobota 07 Lipiec 2007 11:41:02 am - elem84

$config->db->config->asArray() ta część jest nieaktualna dla wersji 1.0 należy ją zastąpić $config->db->config->toArray()

Zend
Poniedziałek 26 Luty 2007 10:15:26 am - mrm

czy na pewno to działa ?, stworzyłem odpowiedni pliki, katalogi, skopiowałem cały kod, i nie działa...;/, wydaję mi się że może być 5 przyczyn takiego stanu rzeczy:
1 - źle skopiowałem kod, przeoczyłem cos...
2- mam coś nie tak z serwerem
3- korzystam z wersji 0.8
4- to po prostu nie działa
5 -inne

Szkoła kononowicza
Poniedziałek 29 Styczeń 2007 4:03:22 am - MARIO77 <manius162_at_wp.pl>

cytat:
"Zend Framework rezerwuje również domyślny controller i nie powinno być dla nas niespodzianką, że też się nazywa się on index."

Szkoła KONONOWICZA :D

Wspólny kod HTML
Sobota 16 Grudzień 2006 11:52:21 pm - vallthore

Wspólny kod HTML jest chyba trochę ucięty, a dokładnie początek strony 10 z oryginalnego pdf'a

hehe
Piątek 24 Listopad 2006 4:29:49 pm - sabistik <wiktorski_at_poczta.php.pl>

hehe, ano dobre, dobre. Już poprawiam.

tworzymy widok
Środa 22 Listopad 2006 1:48:14 am - orideith

cytuje ..w związku z czym nie ma seksu używać akcji. hmm seks i zend :)
Nie mogłem się powstrzymac.

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2020 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System