我试图为我的Cakephp应用程序定义一个shell。这是代码:
<?php
App::uses('AppModel','Model');
class UserShell extends AppShell {
public $uses = array('User');
public function show() {
$user = $this->User->findByUsername($this->args[0]);
$this->out(print_r($user, true));
}
}
?>
但是当我尝试执行命令
时./cake user show anyUserName
控制台返回错误
Class 'AppModel' not found in /var/www/cakeprova_2.5.7/lib/Cake/Utility/ClassRegistry.php on line 186
我将文件AppModel.php放在自己的位置,所以我不知道出了什么问题......有人能帮帮我吗?
答案 0 :(得分:1)
您正在使用App :: uses()错误。 它意味着在此文件中包含您需要的类,而不是其他类。 所以
a)修复此shell文件中的语句,然后添加App::uses('AppShell', 'Console/Command');
b)您很可能在用户模型类文件中遗漏了App::uses('AppModel','Model');
。
因为你在说class User extends AppModel {}
,对吧?
答案 1 :(得分:0)
谢谢马克!解释了错误:我把文件放在错误的目录中:
/lib/Cake/Console/Command
但是把它放在正确的目录后:
/app/Console/Command
它奏效了。但非常感谢你的帮助
答案 2 :(得分:0)
我在将 cakephp 1.3 迁移到 2.10 时发现了这个错误
我如下更新 Model/AppModel.php 并修复了错误。
App::import('Vendor', 'Find.find_app_model');
class AppModel extends FindAppModel {
到
App::uses('Model', 'Model');
class AppModel extends Model {