CakePHP - 重复的控制器代码,并且“无法找到与paginate兼容的对象”错误

时间:2017-10-03 05:31:47

标签: php mysql cakephp pagination

我是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']);
    }

0 个答案:

没有答案