Как выполнить действие контроллера в CakeStack Overflow

Я использую 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 ()». Спасибо.

0

Решение

Когда вы открываете ссылку, которую вы даете, они пишут в «опасной» (красной) панели: «Этот документ относится к версии CakePHP, которая больше не поддерживается. Пожалуйста, обновитесь до более новой версии!»

Другими словами это означает: пожалуйста … прекратите то, что вы делаете, и начните с последней версии cakephp (теперь это 3,5)

Большая часть того, что вы изучите с cakephp 1.2, вероятно, устарела и, конечно, не рекомендуется с новым PSR.


Извини брат!
для вашего вопроса действия — это не только методы контроллеров, используемые для отображения представления, если вы установите $ this-> autoRender в false, ваши действия не будут нуждаться в представлениях

Например, с Аякса действие или когда вы запустите простой метод, который не должен возвращать визуальную информацию / вывод (для визуализации представления), а всего лишь одно сообщение на текущей странице).
Пример или метод, который не нуждается в выводе (view), а только получает результат

  • удаление чего-либо (группа, продукт, клиент, …)
  • выйти из системы
  • проверьте, использует ли пользователь IP-адрес авторизации для подключения,

И если я понимаю твой вопрос, Посмотреть и функция view () не совпадают.
представления — это вывод (то, что вы видите на экране)
и wiew () — это открытая функция, используемая для отображения деталей элемента в вашем приложении (пользователь, группа, продукт, событие, курс, ….)
Когда вы создаете приложение, для каждого элемента / объекта вы должны иметь контроллер с наименьшим CRUD функции,

  1. С для создания / вставки новой сущности (обычно называемой методом add ()),
  2. р прочитать / выбрать один объект (называемый методом view ()) или список объектов (называемый методом index ()),
  3. U обновить элемент (метод с именем edit ()) и
  4. D удалить (метод с именем delete ())

Это означает, что в вашем контроллере Users (например) вы найдете, по крайней мере, индекс(), добавлять() редактировать(), Посмотреть() а также удалять() методы и дополнительные другие публичные функции (необходимые для вашего приложения или этой сущности), такие как авторизоваться(), выйти(), изменить пароль(), сбросить пароль(), а также обратные вызовы методы, такие как beforefilter(), beforerender(), afterfilter(), который позволяет вам вставить некоторую логику до или после действий контроллеров …

Обратите внимание на 2 вещи:

  1. Представления отображаются внутри расположение, (макет — это часть вашего кода, которую не нужно менять со страницы на другую, а представление — это динамическая информация)
  2. Cakephp есть генератор кода (печь) которые создают для вас с помощью единой командной строки, все ваши контроллеры, представления, модели, …

Надеюсь, поможет

1

Другие решения

я использовал Debugger::trace() изучить и понять код. Вот как выполняется действие моего контроллера «view ()», например:

ImagesController->view('blue-theme', 'timeleft1.jpg')
0