Блок извлечения из внешнего файла 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'); ?>
Спасибо
1 answers
Поместите в начало своего индекса.ctp:
$this->extend('Common/blocks.ctp');
С помощью блоков и наследования представлений вы можете создавать "вложенные макеты", которые в основном аналогичны стандартному файлу макета торта. Таким образом, у вас будет основной layout.ctp, а ctp-представление действий контроллера будет основано на файле родительского представления (например, /Commons/xxxx.ctp), который "заполняется" с помощью блоков.
Блоки похожи на элементы, но менее "формальны", если вы не используете функции "наследования представлений". Их разметка и данные создаются в вашем сценарии, возможно, в нескольких местах, чтобы они могли быть более громоздкими для отладки/обслуживания (т. Е. Представьте, что вы добавляете разметку к блоку из нескольких классов). Их также сложнее повторно использовать, если вы не используете наследование.
Элементы больше похожи на автономные файлы представления, которые можно использовать в любом представлении контроллера+действия или макете: вся разметка находится в одном месте, и вы просто передаете данные.
Итог: если вы новичок в торте, вы можете прекрасно обойтись одними элементами. Просмотр наследования может помочь сделать виды/макеты более элегантными, но ценой некоторой сложности.