2017-02-03 21 views
-5

Может кто-нибудь сказать, что случилось с моим code.I я использую ошибку CakePHP 2.9.5.Getting: «приложение \ Controller \ AppController» Класс не найденAppController не нашел

<?php 
namespace app\Controller; 
use app\Controller\AppController; 

Class ProductsController extends AppController{ 

    public function index() 
    { 
     $prducts = $this->Product->find('all'); 

     print_r($prducts); 
    } 
} 

?> 
+1

Вопросы, требующие помощи по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См.: Как создать [mcve]. –

ответ

0

Это происходит потому, что вы используете неправильное пространство имен для контроллера. Контроллеры в CakePHP имеют свои собственные отдельные пространства имен.

Заменить

namespace app\Controller; 
use app\Controller\AppController; 

С

use AppController; 

или использовать этот

App::uses('AppController', 'Controller'); 

Это должно работать.

+0

Ни один из них не будет работать. Правильное пространство имен в CakePHP 3.x по умолчанию должно быть «App», с верхним индексом 'A', а в CakePHP 2.x импорт требует указать пакет (2-й аргумент' App :: uses() ', который не является обязательным), в данном случае 'Controller'. – ndm

+0

@ndm Да .. Я просто пропустил это. Спасибо, я отредактировал ответ. Но в торте 2.x 'use AppController' будет работать нормально. –

+0

Я бы сомневался, что это, скорее всего, просто не будет иметь никакого эффекта, так как даже при использовании композитора будет автозагрузчик, который мог бы загрузить эту ссылку (если только она не будет явно настроена). Вероятно, это просто работает, потому что класс/файл AppController уже был включен из другого места. – ndm