Я просто новый 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') ?>