Из того, что я понял из вашего вопроса и комментариев, вы хотите визуализировать что-то в определенном месте вашего обзора, но вы хотите поместить код для этого компонента в отдельный файл .ctp.CakePHP уже имеет встроенные инструменты для достижения этой цели - Elements and Cells.
Элементы - это многократно используемые фрагменты кода, которые находятся в каталоге src/Template/Element
.Чтобы создать элемент, просто создайте новый файл .ctp (например, myelement.ctp) в этом каталоге и выведите его в главном представлении, используя:
<?= $this->element("myelement") ?>
Элементы имеют доступ к переменным, передаваемым в представление, из которогоВызываются, но при необходимости можно также передать переменные в качестве второго аргумента:
<?= $this->element("myelement", ["somevariable" => "somevalue"]) ?>
С другой стороны, у вас есть также ячейки, которые должны использоваться при необходимости для создания компонента многократного использования, который зависит от некоторыхлогика, которая должна быть отделена от кода контроллера.Ячейка состоит из двух частей - класса Cell, который эквивалентен контроллеру, и файла шаблона.Его можно запечь:
bin/cake bake cell Sample
Эта команда создаст файлы src/View/Cell/SampleCell.php
и src/Template/Cell/Sample/display.ctp
.В первом из них может быть выполнена стандартная логика контроллера.Во-вторых, вы можете поместить HTML и доступ к переданным переменным.Ячейка может быть отображена в виде с помощью:
<?= $this->cell("Sample") ?>
Более подробную информацию можно найти в документах:
Элементы
ViewКлетки