在Laravel中遇到了“class not found”错误

3

我正在使用Laravel,并遵循教程http://technetlk.blogspot.com.au/2012/09/laravel-backbonejs-coffeescript_3527.html。目前正在完成此教程的第七部分。

routes.php中,我已经编写了以下内容:

Route::any('api/category/(:num?)',
   array('as' => 'api.category',
        'uses' => 'api.category@index')
);

api/category.php中,
<?php
class Api_Category_Controller extends Base_Controller
{
    public $restful = true;
    public function get_index($id = null) 
    {
        if (is_null($id ))
        {
            $allCats = Category::all();
            return BaseModel::allToJson($allCats);
        }
        else
        {
            $cat = Category::find($id);
            return $cat->toJson();            
        }
    }
    public function post_index()
    {
            $cat = Input::json();
            $dbCat = new Category();
            $dbCat->code = $cat->code;
            $dbCat->name = $cat->name;
            $dbCat->save();
            return $dbCat->toJson();
    }

    public function put_index()
    {
            $cat = Input::json();
            $dbCat = Category::find($cat->id);
            $dbCat->code = $cat->code;
            $dbCat->name = $cat->name;
            $dbCat->save();
            return $dbCat->toJson();
    }
    public function delete_index($id = null)
    {
            $dbCat = Category::find($id);
            $dbCat->delete();        
    }    
}

?>

BaseModel.php文件中。
<?php
class Category extends BaseModel 
{
    public static $table = 'tbl_category';
}
class BaseModel extends Eloquent 
{
   public function toJson()
   {
     return json_encode($this->to_array());
   }
   public static function allToJson($array)
   {
      $temp = array();
      foreach($array as $t)
      {
          $temp[] = $t->to_array();                
      }
      return json_encode($temp);                    
    }
}
?> 

当我尝试运行时
curl -X POST http://lbc.dev/api/category -H "Content-Type: application/json" –d '{"code":"cat1", "name":"Category One"}'

我遇到了以下错误:

未处理的异常

消息:

找不到类“Category” 位置:

C:\xampp\htdocs\NewBlog\application\controllers\api\category.php 的第9行

2个回答

1

你的分类模型应该位于/application/models/category.php

你的BaseModel类应该位于/application/models/basemodel.php

以下是如果你的BaseModel类不在定义的自动加载目录中:

Another problem you may face is the BaseModel not autoloading correctly. This can be fixed by appending this line of code to your start.php file found in your application folder:

// Autoloader::map
'BaseModel' => path('app').'/path/to/basemodel.php',

谢谢Joel,但我不明白basemodel的这个路径是什么意思:path('app').'/path/to/basemodel.php' - user1829474
你可能不需要映射到“BaseModel”,但请确保两者都在“application/models”中。 - Jason Lewis
Jason Lewis是正确的。如果您没有将BaseModel类保存到“application/models/basemodel.php”,则只需要Autoloader :: map代码。 - Joel Larson

1

在使用之前,您需要在控制器文件中指定模型

请在控制器文件中以下面的代码行之前添加以下代码:

use App\Category;

class Api_Category_Controller extends Base_Controller {


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接