Как вызвать вид в другом представлении с помощью cakephp

Я просто новый CakePhp, мне интересно, как вызвать вид в другом представлении.

Когда я начал запускать CakePhp, макет по умолчанию находится в представлении / layouts / default.ctp .

В default.ctp я назвал имя viewviewviewview ( view / homes / homeview.ctp ).

Вот мой код:

<?php echo $this->fetch('homeview'); // this statement here is work ?> 

И в homeview.ctp я назвал другое представление с именем displayphone ( view / homes / displayphone.ctp ) homeview.ctp

 <?php $this->start('homeview'); ?> <h1> This is home view </h1> <?php echo $this->fetch('displayphone'); // this statement does not work; ?> <?php $this->end(); ?> 

displayphone.ctp

 <?php $this->start('displayphone');?> <h1> This page display phone </h1> <?php $this->end(); ?> 

Почему я не могу назвать блок отображения в homeview?

Как вы упомянули,

  $this->fetch('homeview'); 

создал блок по имени homeview, Refer this http://book.cakephp.org/2.0/ru/views.html

Поскольку вызов другого представления внутри представления невозможен, если вы не создаете для него элемент. Элемент – это общий набор HTML, который можно использовать в любом файле вида через проект. для цели создайте элемент по имени «displayphone.ctp» в папке Element внутри, а затем вызовите его как

  $this->element('displayphone'); 

Надеюсь, это решит вашу цель.

Да, вы можете вызвать представление внутри другого представления (Не хорошо, но вы можете это сделать).

Например, у вас есть view 2 views Views / Users / login.ctp Views / Users / register.ctp

и вы хотите вызвать просмотр регистра в окне входа в систему.

 // File login.ctp $this->Element('../Users/register.ctp'); // ('..' . DS . 'Users' . DS . 'register.ctp') 

Это позволит просматривать регистр как элемент и работать отлично.

Для этого вам нужно создать элемент, который вы можете включить в любой файл вида.

Для CakePHP 3 используйте это

 <?= $this->requestAction('/Users/register') ?>