Использование Cake w / url extensions - PullRequest
0 голосов
/ 14 декабря 2011

Я использую CakePHP 2.0 (я считаю, что это v2.0.3.) И PHP 5.3.8.

Я работаю над приложением, которое использует поддержку Cake для расширений URL. В частности, я выводлю XML всякий раз, когда URL-запрос заканчивается расширением .xml. Если запрос URL сделан без какого-либо расширения, то мое приложение отображает стандартное представление. Все это прекрасно работает -

request .../controller/action.xml renders via view/controller/xml/action.ctp while request .../controller/action renders via view/controller/action.ctp.

Для этого я сделал следующее:

1. Added support for url extension; added the following line to route.php -- Router::parseExtensions('xml');
2. Added support request handling; added the following line to MyController.php -- public $components = array('Session', 'RequestHandler');

Для вывода xml я использую класс Cake 'XML' вместе с классом PHP SimpleXMLElement. Моя проблема в том, что полный XML никогда не генерируется. Предполагается, что классы генерируют xml на основе входного массива PHP, однако создается впечатление, что полный массив не обрабатывается. Мой вывод XML является частичным.

Мой исходный код в моем файле вида (.ctp) выглядит следующим образом:

$ simple_xml_elem = Xml :: build ($ xml_array); echo $ simple_xml_elem-> asXML ();

Интересно, что в процессе отладки этой проблемы я обнаружил, что подобное поведение можно наблюдать, если я просто пытаюсь вывести объект представления в файл представления XML (../view/controller/xml/action. CTP). 'var_dump ($ this)' выводит только частичный дамп представления. Тот же дамп представления, выполненный в стандартном файле представления (../view/controller/action.ctp), выводит полный дамп представления.

Я считаю, что Cake каким-то образом настраивает среду просмотра иначе, когда он маршрутизирует расширение url, чем когда запрашивается стандартное представление.

Могут ли некоторые пролить свет на меня, прежде чем я потеряю свои волосы. Пожалуйста???? Спасибо!

1 Ответ

0 голосов
/ 18 декабря 2011

Вы смотрели объекты ответа и запроса

http://mark -story.com / posts / view / the-cakerequest-object-in-cakephp-2-0 - статья была написана, когда торт 2 был альфа, я думаю, но Марк говорит о понятие объекта запроса (еще одна запись для ответа)

оба объекта передаются контроллеру http://book.cakephp.org/2.0/en/controllers/request-response.html

на данный момент, я полагаю, вы используете comp запроса для обработки переключения макетов (хотя это может быть сделано без него)

...