Невозможно заставить шаблонизатор 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 и исправил несколько опечаток в своих конфигурациях расширений, после чего он начал работать как положено.

Другие вопросы по тегам