移动到在线时找不到 ATK4 模型

2022-01-02 00:00:00 model frameworks php atk4

我正在使用 ATK4 开发一个网站,这是一个带有 jquery 的 php 框架.

I am developing a website using ATK4, a php framework with jquery.

我使用 localhost/test1 作为目录和本地 php 数据库在我的笔记本电脑上开发了这个.

I have developed this on my laptop using localhost/test1 as the directory and with a local php database.

如果我将所有目录在线移动并将 php 数据库导入到我的网络主机,大多数页面都可以工作,但在一个页面上,我在其中一个页面上收到错误消息,指示

If i move all the directories online and import the php database to my web host, most of the pages work but on one, i get an error on one of the pages indicating

致命错误:在第 131 行的/homepages/4/d184034614/htdocs/paperless/atk4/lib/AbstractObject.php 中找不到类model_TaskType"

Fatal error: Class 'model_TaskType' not found in /homepages/4/d184034614/htdocs/paperless/atk4/lib/AbstractObject.php on line 131

AbstractObject.php 中引用的行是 add 函数的一部分.

The line referred to in AbstractObject.php is part of the add function.

模型存在并且完全相同的代码在本地主机上运行.其他页面也有模型并且看起来工作正常.该表在两个数据库上的结构完全相同.

The model is present and exactly the same code is working on localhost. Other pages also have models and appear to be working fine. The table has exactly the same structure on both databases.

在有问题的页面中没有直接引用模型,它是引用模型的refModel.这里是否有一些路径问题不会出现在本地主机上?

The model is not directly referenced in the page that has a problem, it is a refModel to a Model which is referenced. Is there some path issue here that doesnt present itself on localhost ?

TaskType 模型看起来像这样类 Model_TaskType 扩展了 Model_Table {公共 $entity_code='vscrum_tasktype';公共 $table_alias='ty';

The TaskType model looks like this class Model_TaskType extends Model_Table { public $entity_code='vscrum_tasktype'; public $table_alias='ty';

function init(){
    parent::init();

    $this->addField('id')->mandatory(true);
    $this->addField('name')->mandatory(true);
    $this->addField('budget_code')->mandatory(true);
    $this->addField('colour_desc')->refModel('model_Colour');
    $this->addField('project_id');
    $this->addField('team_id');
    $this->addField('company_id');

    $this->addCondition('team_id',$this->api->getTeamID());
  }

}

添加到有问题页面的任务模型如下

and the Task Model which is added to the page with the problem looks like this

  class Model_Task extends Model_Table {
  public $entity_code='vscrum_task';
  public $table_alias='tk'; 

function init(){
    parent::init();

//  debug causes error in Ajax in ATK v4.1.1
//  $this->debug(true);
$this->addField('id')->system(true)->visible(false);
$this->addField('story_id')->system(true)->visible(false);
$this->addField('backlog_ref')->system(true)->visible(false);
$this->addField('sprint_id')->system(true)->visible(false);
$this->addField('team_id')->system(true)->visible(false);
$this->addField('status')->defaultValue('I')->visible(false);
$this->addField('task_desc')->mandatory(true)->visible(true);
$this->addField('points')->mandatory(true)->defaultValue(1)->datatype('numeric');
    $this->addField('member_id')->mandatory(true)->refModel('model_Member');

    // join colour
    $this->addRelatedEntity('ty','vscrum_tasktype','tasktype_id','left');

    //tasktype
    $this->addField('tasktype_id')->refModel('model_TaskType')->mandatory(true);

}
}

也许我错过了一些明显的东西,有什么想法为什么这会在本地主机上正常工作但在我的网络主机上中断?

Maybe i've missed something obvious, any ideas why this would work fine on localhost but break on my webhost ?

推荐答案

 Class 'model_TaskType' not found in 

您应该始终使用精确的大写.

you should always use exact capitalization.

如果你有 Model_TaskType,当添加到 CRUD 时它应该是 Model_TaskType.

if you have Model_TaskType, it should be Model_TaskType when added to CRUD.

还有这个地方:

$this->addField('tasktype_id')->refModel('model_TaskType')->mandatory(true);

应该是:

$this->addField('tasktype_id')->refModel('Model_TaskType')->mandatory(true);

在 widows 上,文件名大小写没有区别,而在 linux 中则不同.

On widows, file name capitalization does not make a difference, where as in linux it does.

相关文章