Я использую CakePHP 1.2. Я изучаю логику кода CakePHP, написанного кем-то другим. Я изучаю следующий контроллер:
<?php
// For serving up images or other files.
class ImagesController extends AppController
{
function __setupDir($destination)
{
..........
}
function view()
{
..........
}
}
?>
Я знаю, что CakePHP имеет соглашения, которые определяют, как конкретные действия вызываются, когда запросы соответствуют URL. Например, учитывая мой ImagesController выше, мне нужно иметь этот файл:
приложение / просмотров / изображения / view.ctp
Тогда мне нужно указать браузеру, например, что-то вроде этого:
HTTP: // локальный / MyApplication / изображений / просмотр
Это должно выполнить функцию view (), определенную для контроллера ImagesController, упомянутого выше. Вот как работают соглашения CakePHP 1.2.
В соответствии с https://book.cakephp.org/1.2/en/The-Manual/Developing-with-CakePHP/Controllers.html, «Действия — это методы контроллера, используемые для отображения представлений. Действие — это единственный метод контроллера». В моем случае функция view () — это действие, но, как я вижу, в приложении оно не используется для отображения представления. В коде, который я изучаю, я вижу, что иногда, когда изображения или изображения загружаются на веб-сайт, выполняется функция view () контроллера ImagesController. Я пытаюсь точно понять, что вызывает эту функцию «view ()». Я знаю, что это не происходит при посещении HTTP: // локальный / MyApplication / изображений / просмотр. Есть ли альтернативный способ выполнить действие контроллера в CakePHP в целом или, в частности, в CakePHP 1.2? Мне просто нужно знать и найти код, который запускает эту функцию «view ()». Спасибо.
Когда вы открываете ссылку, которую вы даете, они пишут в «опасной» (красной) панели: «Этот документ относится к версии CakePHP, которая больше не поддерживается. Пожалуйста, обновитесь до более новой версии!»
Другими словами это означает: пожалуйста … прекратите то, что вы делаете, и начните с последней версии cakephp (теперь это 3,5)
Большая часть того, что вы изучите с cakephp 1.2, вероятно, устарела и, конечно, не рекомендуется с новым PSR.
Извини брат!
для вашего вопроса действия — это не только методы контроллеров, используемые для отображения представления, если вы установите $ this-> autoRender в false, ваши действия не будут нуждаться в представлениях
Например, с Аякса действие или когда вы запустите простой метод, который не должен возвращать визуальную информацию / вывод (для визуализации представления), а всего лишь одно сообщение на текущей странице).
Пример или метод, который не нуждается в выводе (view), а только получает результат
И если я понимаю твой вопрос, Посмотреть и функция view () не совпадают.
представления — это вывод (то, что вы видите на экране)
и wiew () — это открытая функция, используемая для отображения деталей элемента в вашем приложении (пользователь, группа, продукт, событие, курс, ….)
Когда вы создаете приложение, для каждого элемента / объекта вы должны иметь контроллер с наименьшим CRUD функции,
Это означает, что в вашем контроллере Users (например) вы найдете, по крайней мере, индекс(), добавлять() редактировать(), Посмотреть() а также удалять() методы и дополнительные другие публичные функции (необходимые для вашего приложения или этой сущности), такие как авторизоваться(), выйти(), изменить пароль(), сбросить пароль(), а также обратные вызовы методы, такие как beforefilter(), beforerender(), afterfilter(), который позволяет вам вставить некоторую логику до или после действий контроллеров …
Обратите внимание на 2 вещи:
Надеюсь, поможет
я использовал Debugger::trace()
изучить и понять код. Вот как выполняется действие моего контроллера «view ()», например:
ImagesController->view('blue-theme', 'timeleft1.jpg')