我是CakePHP的新手,我创建了一个新网站并烘焙了所有控制器和模型。他们工作正常。我正在玩CakePHP。这个CakePHP项目在某些类别下创建了一个网站链接目录。
我烘焙了一个名为“LinksController”的新控制器,我可以在网站上看到View。没问题。
<?php
namespace App\Controller;
use App\Controller\AppController;
/**
* Links Controller
*
* @property \App\Model\Table\LinksTable $Links
*
* @method \App\Model\Entity\Link[] paginate($object = null, array $settings = [])
*/
class LinksController extends AppController
{
/**
* Index method
*
* @return \Cake\Http\Response|void
*/
public function index()
{
$this->paginate = [
'contain' => ['Categories']
];
$links = $this->paginate($this->Links);
$this->set(compact('links'));
$this->set('_serialize', ['links']);
}
但是,如果我创建自己的控制器,没有涉及烘焙,通过在src \ Controller \中直接添加新文件“FooController.php”,我会将代码从“LinksController.php”复制并粘贴到“FooController” .PHP”。
然后我将控制器名称更改为“FooController”。我加载了网页并收到错误消息
无法找到与paginate兼容的对象。
它指出了错误的来源。 ⟩
Cake \ Controller \ Controller-&gt; paginate APP / Controller \ FooController.php, 第27行。
显然,错误发生在FooController中,我正在尝试对Links对象进行分页,如下所示。
如果我注释掉index()函数中的所有内容,我可以看到视图并且没有错误。
如果此代码可以在控制器“LinksController”中工作,为什么它在“FooController”中不起作用?它们位于同一目录中,除控制器名称外,它们具有相同的代码。
我猜我错过了什么,你不能只复制控制器代码?
你能帮帮我吗?
注意:我的mySQL数据库中没有“Foo”表。 “FooController”只是一个自定义控制器。
<?php
namespace App\Controller;
use App\Controller\AppController;
/**
* Links Controller
*
* @property \App\Model\Table\LinksTable $Links
*
* @method \App\Model\Entity\Link[] paginate($object = null, array $settings = [])
*/
class FooController extends AppController
{
/**
* Index method
*
* @return \Cake\Http\Response|void
*/
public function index()
{
$this->paginate = [
'contain' => ['Categories']
];
$links = $this->paginate($this->Links);
$this->set(compact('links'));
$this->set('_serialize', ['links']);
}