Jump to content

Archived

This topic is now archived and is closed to further replies.

sasori

class missing?, please help

Recommended Posts

here's the screenshot of the error

vxj6uf.jpg

 

here's the indexController code


<?php

class IndexController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        $this->view->title = "My Albums";
        $this->view->headTitle($this->view->title);
        
        $albums = new Application_Model_DbTable_Albums();
        $this->view->albums = $albums->fetchAll();
    }

    public function addAction()
    {
        // action body
    }

    public function editAction()
    {
        // action body
    }

    public function deleteAction()
    {
        // action body
    }


}

 

here's the albums.php model class (the alleged missing class ? )

<?php 

class Application_Model_DbTable_Albums extends Zend_Db_Table_Abstract
{
protected $_name = 'albums';

public function getAlbum($id)
{
	$id = (int)$id;
	$row = $this->fetchRow('id = '. $id);
	if(!$row)
	{
		throw new Exception("Could not find row $id");
	}
	return $row->toArray();
}

public function addAlbum($artist,$title)
{
	$data = array(
			'artist'=>$artist,
			'title'=>$title
	);
	$this->insert($data);
}

public function updateAlbum($id,$artist,$title)
{
	$data = array(
			'artist'=>$artist,
			'title'=>$title
	);
	$this->update($data,'id = '.(int)$id);
}

public function deleteCd($id)
{
	$this->delete('id = '.(int)$id);
}
}

?>

 

here's the view of index.phtml

 

<p><a href="<?php echo $this->url(array('controller'=>'index','action'=>'add'));?>">
Add new album</a></p>
<table>
<tr>
<th>Title</th>
<th>Artist</th>
<th> </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="<?php echo $this->url(array(
										'controller'=>'index',
										'action'=>'edit',
										'id'=>$cd->id));?>">Edit</a>
	<a href="<?php echo $this->url(array(
										'controller'=>'index',
										'action'=>'delete',
										'id'=>$album->id));?>">Delete</a>
</td>
</tr>
<?php endforeach;?>
</table>

 

and here's the screenshot of the folder structures

2h50c3n.jpg

 

I don't know why the hell it's giving me that error, am just following the akrabat's tutorial on zend framework 1.10

Share this post


Link to post
Share on other sites

Is application/models on your include path ?

Share this post


Link to post
Share on other sites

this is what i have in the public/index.php file

<?php

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();

 

is that where the application/models should exists ? or you're referring to a different thing ?

Share this post


Link to post
Share on other sites

Its been a long while since I've used Zend and there could be a more standard way of doing it but, if you want your Models directory on your path you need to add it.

 

set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    realpath(APPLICATION_PATH . '/Model'),
    get_include_path(),
)));

 

Also, your models directory should be named Model and the albums.php file should be named Albums.php

Share this post


Link to post
Share on other sites

it didn't help..still

Fatal error: Class 'Application_Model_DbTable_Albums' not found in C:\xampp\htdocs\zf\zf-tutorial\application\controllers\IndexController.php  on line 16

Share this post


Link to post
Share on other sites

You should look up resource autoloaders.  You'll need to register Application as a resource namespace like so:

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
    'basePath'  => 'path/to/application',
    'namespace' => 'Application',
));

The code should go into your bootstrap class (assuming you're using Zend_Application).

Share this post


Link to post
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.