Hejka,
mam taką strukturę katalogów:
projekt
--- app
------ frontend
--------- controllers
------------ ArtykulController.php
--------- models
------------ Person
--------------- Person_Author.php
------------ Author.php
------------ Article.php
--------- views
--- lib
------ Zend
------ mojeklasy
--- www
------ .htaccess
------ index.php
index.php
<?php
require_once('./__autoload.php');
$db = new Zend_Db_Adapter_Pdo_Mysql
(array( 'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'baza'
));
$db->setFetchMode(1);
Zend_Controller_Front::run('/home/phpion/public_html/nowy.benchmark.pl/app/frontend/controllers');
?>
ArtykulController:
<?php
class ArtykulController extends Zend_Controller_Action {
public function pokazAction() {
$q = 'SELECT * FROM articles WHERE id=1';
$q = $db->query($q);
$q->setFetchMode(Zend_Db::FETCH_NUM);
$r = $q->fetch();
$this->article = new Article($r[0], $r[1], $r[2], $r[3]);
$this->edek = "edek";
}
}
?>
Article.php
<?php
/**
* Klasa przechowująca dane na temat artykulu.
*
* @author phpion
*/
class Article {
/**
* Identyfikator artykulu.
*
* @access protected
* @var string
*/
protected $id;
/**
* Tytul artykulu.
*
* @access protected
* @var string
*/
protected $title;
/**
* Data utworzenia artykulu.
*
* @access protected
* @var datetime
*/
protected $date;
/**
* Artykul widoczny lub ukryty/
*
* @access protected
* @var boolean
*/
protected $visible;
/**
* Tablica stron nalezacych do artykulu.
*
* @access protected
* @var array
*/
protected
$pages = array();
/**
* Tablica autorow artykulu.
*
* Sklada sie z obiektow typu Person_Author
*/
protected
$authors = array();
/**
* Tworzy obiekt artykulu.
*
* @access public
* @param integer $id Identyfikator artykulu.
* @param string $title Tytul calego artykulu
*/
public function __construct($id, $title, $date, $visible) {
$this->id = (int)$id;
$this->title = $title;
$this->date = $date;
$this->visible = $visible;
$this->loadAuthors();
}
/**
* Wczytuje autorow danego artykulu.
*
* @access protected
*/
protected function loadAuthors() {
$q = 'SELECT authors.* FROM articles_authors LEFT JOIN authors ON articles_authors.aut
hor_id=authors.id WHERE articles_authors.article_id='.$this->id.' ORDER BY authors.surname';
$q = $db->query($q);
$q->setFetchMode(Zend_Db::FETCH_NUM);
while ($r = $q->fetch()) {
array_push($this->authors, new Person_Author
($r[0
], $r[1
], $r[2
], $r[3
])); }
}
}
?>
Przy wywołaniu
http://localhost/artykul/pokaz dostaję:
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)'
.
Modyfikując:
na:
<?php $db = new Zend_Db_Adapter_Pdo_Mysql
(array( 'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'baza'
));?>
wszystko śmiga tj. obiekty są tworzone poprawnie. Co robię źle? O czym zapomniałem?
Z góry dzięki za pomoc.
I przy okazji: czy każda akcja w kontrolerze musi posiadać swój plik widoku (jeśli dobrze to nazywam) w views/scripts/{$nazwa_kontrolera}/{$nazwa_akcji}? Aktualnie wgrywam tam puste pliki aby ominąć występujące błędy (podobne do powyższego).
Ten post edytował phpion.com 7.07.2007, 20:32:41