#php #templates #silverstripe
#php #шаблоны #silverstripe
Вопрос:
У меня есть класс
class ModuleController extends Controller {
private static $allowed_actions = array(
'index'
);
public function index(SS_HTTPRequest $request) {
return $this->renderWith(array("Module/HomePage", "Page"));
}
}
И два шаблона, один Page.ss
и другой Layout/Module/Homepage.ss
. В Page.ss
у меня есть куча html и $Layout
. Просматривая другие области онлайн, я бы ожидал, что страница будет отображаться в соответствии с Page.ss
, а переменная layout будет отображаться с Layout/Module/HomePage.ss
, однако она просто отображается с Page.ss
. Как я могу заставить мою страницу рендериться с базовым шаблоном Page.ss
и рендерить $Layout
с макетом, определенным моим контроллером?
Редактировать
Итак, если я переведу Homepage.ss
на один уровень выше (т. Е. без каталога ‘Module’), этот код сработает. Возможно ли иметь каталоги в каталоге Layout, поскольку я думаю, что эта папка со временем станет беспорядочной без какой-либо структуры. Также кажется странным, что путь к папке работает при настройке шаблона, но не макета.
ПРАВКА 2
Похоже, что это основная проблема, которую я только что обнаружил другим способом и, похоже, она решается в SS4, поэтому, похоже, это невозможно сделать в SS3.
Комментарии:
1. При более глубоком рассмотрении документа массив, который может быть передан в renderWith, просто ищет первый используемый шаблон, а не комбинацию шаблон / макет. Есть ли способ, которым я могу это сделать?