Невозможно заставить шаблонизатор Typo3 Fluid работать
Я пытаюсь начать работать с шаблонизатором Typo3 Fluid, и мне удалось запустить его как-то по-грязному. Но потом я нашел проект fedext.net вместе с этой демонстрацией. И попробовал следовать этому уроку. Я заканчиваю со следующей структурой каталогов:
typo3conf/
ext/
my_extension/
Classes/
Controller/
PageController.php
Configuration/
constants.txt <empty for now>
setup.txt
Resources/
Private/
Layouts/
Partials/
Templates/
Page/
FrontPage.html
Public/
ext_autoload.php <empty>
ext_emload.php
ext_localconf.php <empty>
ext_tables.php
PageController.php:
<?php
class Tx_MyExtension_Controller_PageController extends Tx_Fluidpages_Controller_AbstractPageController {
public function frontPageAction() {
}
}
Setup.txt:
plugin.tx_myextension.view {
templateRootPath = EXT:my_extension/Resources/Private/Templates/
partialRootPath = EXT:my_extension/Resources/Private/Partials/
layoutRootPath = EXT:my_extension/Resources/Private/Layouts/
}
FrontPage.html:
{namespace v=Tx_Vhs_ViewHelpers}
{namespace flux=Tx_Flux_ViewHelpers}
<f:layout name="Page" />
<div xmlns="http://www.w3.org/1999/xhtml" lang="en"
xmlns:v="http://fedext.net/ns/vhs/ViewHelpers"
xmlns:flux="http://fedext.net/ns/flux/ViewHelpers"
xmlns:f="http://fedext.net/ns/fluid/ViewHelpers">
<f:section name="Configuration">
<flux:flexform id="default-page" label="Default page template">
<flux:flexform.field.input name="settings.entryLevel"
label="Main menu entry level override for this page only"
eval="int,trim" minimum="0" maximum="6"
default="{v:var.typoscript(path: 'lib.menu.main.entryLevel')}">
<flux:flexform.field.wizard.slider hideParent="TRUE" step="1" width="100" />
</flux:flexform.field.input>
</flux:flexform>
<flux:flexform.grid>
<flux:flexform.grid.row>
<flux:flexform.grid.column colPos="1" name="Hero Unit" />
</flux:flexform.grid.row>
<flux:flexform.grid.row>
<flux:flexform.grid.column colPos="0" name="Main Content" />
</flux:flexform.grid.row>
<flux:flexform.grid.row>
<flux:flexform.grid.column colPos="2" name="Footer Content" />
</flux:flexform.grid.row>
</flux:flexform.grid>
</f:section>
<f:section name="Content">
<v:page.content.render column="0" />
</f:section>
<f:section name="AnotherSection">
<!-- more sections as desired, rendering triggered from the "Page.html" Layout file -->
</f:section>
</div>
ext_emconf.php
<?php
$EM_CONF[$_EXTKEY] = array (
'title' => 'Homepage',
'description' => 'Homepage',
'category' => 'misc',
'shy' => 0,
'version' => '1.0.0',
'dependencies' => '',
'conflicts' => '',
'priority' => '',
'loadOrder' => '',
'module' => '',
'state' => 'stable',
'uploadfolder' => 0,
'createDirs' => '',
'modify_tables' => '',
'clearcacheonload' => 0,
'lockType' => '',
'author' => 'me',
'author_email' => 'mail@me.com',
'author_company' => 'me',
'CGLcompliance' => NULL,
'CGLcompliance_note' => NULL,
'constraints' =>
array (
'depends' =>
array (
'typo3' => '6.1.0',
'cms' => '',
'flux' => '5.0.0',
),
'conflicts' =>
array (
'templavoila' => '',
),
'suggests' =>
array (
),
),
);
?>
ext_tables.php
<?php
if (!defined ('TYPO3_MODE')) {
die ('Access denied.');
}
t3lib_extMgm::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'My Extension Homepage');
Tx_Flux_Core::registerProviderExtensionKey('my_extension', 'Page');
Итак, проблема в том, что: хотя бэкэнд, кажется, работает, я постоянно получаю фатальную ошибку PHP во внешнем интерфейсе:
Ядро: Обработчик ошибок (FE): PHP Предупреждение: неверный аргумент указан для foreach() в C:\xampp\apache\htdocs\typo-fluid\typo3temp\Cache\Code\cache_core\ClassLoader_AbstractConfigurationProvider_bc71b4377996b2e6d72f.php строка 481
Во время отладки я обнаружил, что указанное значение равно нулю. Похоже, мне не хватает чего-то простого. Но приведенная выше структура файла - лишь слегка измененная версия этой вещи.
Есть ли хороший пошаговый учебник, как создать пару шаблонов и элементов контента с помощью инструментов fedext? Потому что я установил ознакомительный пакет и попытался скопировать настройки в бэкэнд и файловую структуру, но, похоже, этого недостаточно, и здесь я упускаю что-то очень простое.
ОБНОВЛЕНИЕ: Я также видел это и это, и надеюсь получить ответ от Claus Due, поскольку он является автором инструментов fedext.
1 ответ
Итак, похоже, что главной проблемой здесь было не предупреждение, упомянутое в исходном вопросе, а ошибка в журнале Apache:
PHP Fatal error: Cannot redeclare class Tx_Vhs_Service_AssetService in...
которая была вызвана несовместимостью PHP 5.3.3 с расширением vhs. Итак, я обновил установку PHP и исправил несколько опечаток в своих конфигурациях расширений, после чего он начал работать как положено.