Cakephp3.0我正在将Postcategories控制器调用到Appcontroller中,这是一个错误";调用未定义的方法Cake\Core\App::import();

Cakephp3.0我正在将Postcategories控制器调用到Appcontroller中,这是一个错误";调用未定义的方法Cake\Core\App::import();,cakephp,controller,cakephp-3.0,Cakephp,Controller,Cakephp 3.0,我的代码尝试将所有主要类别的帖子提取到Appcontroller中,以在主页上显示: namespace App\Controller; use Cake\Core\App; use Cake\Controller\Controller; class AppController extends Controller { public $helpers = ['Html', 'Form', 'Session','Time','Tree']; public function initializ

我的代码尝试将所有主要类别的帖子提取到Appcontroller中,以在主页上显示:

namespace App\Controller;
use Cake\Core\App;
use Cake\Controller\Controller;
class AppController extends Controller
{
 public $helpers = ['Html', 'Form', 'Session','Time','Tree'];


public function initialize()
{
    parent::initialize();
    $this->loadComponent('Flash');
    $this->maincategories();
}

function maincategories(){
    App::import('Controller','Postcategories');
    $postcates = new PostcategoriesController;
    $postcates = $postcategory->find('threaded');

}

}
您的
maincegories()
方法错误。从中检索数据需要的是模型,而不是控制器。您需要使用
TableRegistry::get('Postcategories')
来获取
Postcategories
模型,然后调用查找:-

public function maincategories()
{
    $Postcategories = TableRegistry::get('Postcategories');
    $this->set('postcategories', $Postcategories->find('threaded'));
}
$this->set()
正在将类别设置为视图变量(
$postcategories
)。您需要确保包括
use Cake\ORM\TableRegistry位于AppController文件的顶部

确保您已经完全阅读了。

您的
maincegories()
方法是错误的。从中检索数据需要的是模型,而不是控制器。您需要使用
TableRegistry::get('Postcategories')
来获取
Postcategories
模型,然后调用查找:-

public function maincategories()
{
    $Postcategories = TableRegistry::get('Postcategories');
    $this->set('postcategories', $Postcategories->find('threaded'));
}
$this->set()
正在将类别设置为视图变量(
$postcategories
)。您需要确保包括
use Cake\ORM\TableRegistry位于AppController文件的顶部


请确保您已经完全阅读了。

我建议您使用单元格。我建议不要在Cake3中使用
App::import()
,它在Cake2中已经被弃用,并且应该一直被那里的App::uses()替换。在3.x中,现在是“use…”语句。我建议您使用一个单元格。我建议不要在Cake3中使用
App::import()
,它在Cake2中已经被弃用,并且应该一直被那里的App::uses()替换。在3.x中现在是“use…”语句。其他要点:initialize是从construtor调用的-在initialize中调用类似的东西不是一个好主意(因为XsController扩展了app controller-这是一个循环)。如有必要,应从beforeRender调用它。另外,在能够爬网之前尝试运行的风险下,不需要在每次请求不改变的数据时点击数据库,这是避免这种情况的一种方法+1.绝对有效,谢谢忍者。你是对的,我没有仔细阅读检索数据的3.X文档。@Chirayubhat很高兴它起了作用。请接受我的回答,以便其他人知道这是可行的。:-)其他要点:initialize是从construtor调用的-在initialize中调用类似的东西不是一个好主意(因为XsController扩展了appcontroller-这是一个循环)。如有必要,应从beforeRender调用它。另外,在能够爬网之前尝试运行的风险下,不需要在每次请求不改变的数据时点击数据库,这是避免这种情况的一种方法+1.绝对有效,谢谢忍者。你是对的,我没有仔细阅读检索数据的3.X文档。@Chirayubhat很高兴它起了作用。请接受我的回答,以便其他人知道这是可行的。:-)