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

Pierwsze kroki z Zend Framework

Model

Model

Klasa Zend_Db_Table jest klasą abstrakcyjną, w związku z czym powinniśmy ją dziedziczyć w sposób odpowiedni do zarządzania albumami. Domyślnie Zend_Db_Table oczekuje nazwy klasy podobnej do nazwy tabeli, więc naszą klasę nazwijmy Album. Zend_Db_Table zakłada również, że tabela posiada klucz o nazwie id, który jest automatycznie zwiększany przez bazę danych. Obie te konwencje mogą być w razie konieczności zmienione.

Zachowamy naszą tabelę Album w katalogu modeli:

<?php
class Album extends Zend_Db_Table{}

Prawda, jakie to proste?! Na szczeście nasz przykład jest na tyle mało somplikowany, że wszystko, co nam potrzebne Zend_Db_Table udostępnia bezpośrednio. Jeśli jednak potrzebować będziemy jakiejś specyficznej funkcjonalności, to należy ją w tej klasie najpierw zaimplementować. Tymi dodatkowymi funkcjonalnościami, będą funkcje typu szukaj, itp.

Wyświetlanie Albumów

Kiedy już nasza baza danych została skonfigurowana, dochodzimy to sedna naszej aplikacji - wyświetlanie albumów. Wykonane jest to w klasie IndexController.

Każda akcja w IndexController będzie manipulowała bazą danych albumu poprzez klasę Album, w związku z czym ładujemy ją w konstruktorze:

<?php
class IndexController extends Zend_Controller_Action{
    function __construct()
    {
        parent::__construct();
        Zend::loadClass('Album');
    }
    function IndexAction()
    {
        ...

Zaprezentowany tutaj został przykład użycia Zend::loadClass() do ładowania naszych klas, a działa dzięki temu, że nasz katalog modeli umieściliśmy w include_path w pliku index.php.

Teraz wyświetlmy wszystkie albumy z tabeli w indexAction():

...
function indexAction(){
    $view = Zend::registry('view');
    $view->title = "My Albums";
    $album = new Album();
    $view->albums = $album->fetchAll();
    $view->actionTemplate = 'indexIndex.tpl.php';
    echo $view->render('site.tpl.php');
}
...

Funkcja Zend_Db_Table::fetchAll() zwraca obiekt Zend_Db_Table_Rowset, który pozwala nam poruszać się po zwróconych wierszach w szablonie:

<h1><?php echo $this->escape($this->title); ?></h1>
<p>
<a href="/zf-tutorial/index/add">Add new album</a>
</p>
<table>
<tr>
<th>Title</th>
<th>Artist</th>
<th>&nbsp;</th>
</tr>
<?php foreach($this->albums as $album) : ?>
<tr>
<td><?php echo $this->escape($album->title);?></td>
<td><?php echo $this->escape($album->artist);?></td>
<td><a href="/zf-tutorial/index/edit/id/<?php echo $album->id;?>">Edit</a><a href="/zf-tutorial/index/delete/id/<?php echo $album->id;?>">Delete</a></td>
</tr>
<?php endforeach; ?>
</table>

http://localhost/zf-tutorial powinno teraz pokazać ładną listę dwóch albumów.

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