Неустранимая ошибка: класс PagesController не найден в

Я использую торт в течение некоторого времени, и теперь у меня есть слегка измененный контроллер страниц, я хочу использовать его в своем default.ctp, я импортирую его с помощью

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

or

App::import('Controller', 'Pages');

оба работают на моем localhost xampp, ни на веб-сервере openshift. что бы я ни делал, я получаю фатальную ошибку: класс не найден. гуглил эту проблему в течение 2 часов, и чувствую, что я врезаюсь в стену здесь. пожалуйста помоги :)


person Sergey Sob    schedule 16.03.2013    source источник


Ответы (2)


Я бы попытался избежать этих вызовов и использовать соглашения CakePHP. Разница между вашей локальной копией XAMPP и копией OpenShift, вероятно, связана с запуском разных версий CakePHP, но это не имеет значения, если вы будете следовать соглашениям.

Лучше всего поместить все с помощью PagesController в приложение foler / View / Pages. Таким образом, CakePHP обрабатывает весь импорт, требования, маршрутизацию и т. Д. Помимо этого, помните, что путь к приложению в OpenShift - / php / app / (в отличие от XAMPP / app /). Я предполагаю, что это может вызвать проблемы, если у вас есть собственные контроллеры. Надеюсь это поможет!

Изменить: я только что понял, что по умолчанию .ctp вы имеете в виду файл макета. Мне лично не нравится вызывать контроллеры в макете. Я предпочитаю использовать для этого элементы или помощников. Кроме того, PagesController на самом деле не предназначен для включения в макет всего сайта. Он предназначен только для файлов в папке / app / View / Pages.

person Steven    schedule 16.03.2013
comment
здесь он работает, и я хочу, чтобы он отображался на каждой странице, поэтому в любом случае мне придется добавить его в макет: | - person Sergey Sob; 16.03.2013
comment
В качестве продолжения ознакомьтесь с документацией помощников, чтобы узнать, может ли это справиться с нужной вам логикой. book.cakephp.org/2.0/en/views/helpers.html - person Steven; 16.03.2013

хорошо, вместо этого я использовал requestAction, и это работает. :) чтобы решить аналогичную проблему, используйте, скажем, $ pages = $ this-> requestAction ('pages /');

затем "foreach" массив $ pages всякий раз, когда вам нужно. ВАЖНЫЙ! в функции вашего контроллера, которая создает страницу (в данном случае контроллер pagesController и функция index), не забудьте ВОЗВРАТИТЬ созданный вами объект $ pages, а не просто «установить» его, как обычно. :)

person Sergey Sob    schedule 16.03.2013