Блок извлечения из внешнего файла ctp


Я прочитал это и это . Но я не мог найти ответа.

У меня есть этот файл, в котором существуют представления моего действия: Просмотр/MyController/index.ctp

У меня также есть этот файл Просмотр/Общие/блоки.ctp

Файл Blocks.ctp включает в себя следующее:

$this->start('sidebar1');
echo 'Some content';
$this->end();

$this->start('sidebar2');
echo 'Some content more';
$this->end();

Итак, в файле "index.ctp" я хочу получить sidebar1 или sidebar2. Как я могу это сделать? Я написал это в index.ctp, но это не сработало.

<?php echo $this->fetch('sidebar1'); ?>

Также этот не сработал

<?php echo $this->fetch('../View/Commons/blocks.ctp/sidebar1'); ?>

Спасибо

Author: trante, 2012-04-12

1 answers

Поместите в начало своего индекса.ctp:

$this->extend('Common/blocks.ctp');

С помощью блоков и наследования представлений вы можете создавать "вложенные макеты", которые в основном аналогичны стандартному файлу макета торта. Таким образом, у вас будет основной layout.ctp, а ctp-представление действий контроллера будет основано на файле родительского представления (например, /Commons/xxxx.ctp), который "заполняется" с помощью блоков.

Блоки похожи на элементы, но менее "формальны", если вы не используете функции "наследования представлений". Их разметка и данные создаются в вашем сценарии, возможно, в нескольких местах, чтобы они могли быть более громоздкими для отладки/обслуживания (т. Е. Представьте, что вы добавляете разметку к блоку из нескольких классов). Их также сложнее повторно использовать, если вы не используете наследование.

Элементы больше похожи на автономные файлы представления, которые можно использовать в любом представлении контроллера+действия или макете: вся разметка находится в одном месте, и вы просто передаете данные.

Итог: если вы новичок в торте, вы можете прекрасно обойтись одними элементами. Просмотр наследования может помочь сделать виды/макеты более элегантными, но ценой некоторой сложности.

 3
Author: Costa, 2012-04-12 10:31:06