Zum Inhalt springen

Fluuid Template wirft Fehler bei Indexed search Integration

Erstellt am 5. Oktober 2020 · 4 Antworten · letzte Antwort am 12. Oktober 2020

Tags: ViewHelper, Suche, Frage

Stefan80 ·

Meine Typo3 und Indexed Search Engine Version: 10.4.6

Ich habe ein Fluid Template in dem ich einen Partial mit dem Inhalt des Fluid Code des Indexed Search Form Partial Form.html erstellt habe.

Hier ein Teil des Codes:

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="tx-indexedsearch-searchbox">
 <f:form action="search" method="post" id="tx_indexedsearch" pageUid="{settings.targetPid}">

<div class="tx-indexedsearch-hidden-fields">
<f:form.hidden name="search[_sections]" value="0" />
<f:form.hidden name="search[_freeIndexUid]" id="tx_indexedsearch_freeIndexUid" value="_" />

            <f:form.hidden name="search[pointer]" id="tx_indexedsearch_pointer" value="0" />
            <f:form.hidden name="search[ext]" value="{searchParams.ext}" />
            <f:form.hidden name="search[searchType]" value="{searchParams.searchType}" />
            <f:form.hidden name="search[defaultOperand]" value="{searchParams.defaultOperand}" />
            <f:form.hidden name="search[mediaType]" value="{searchParams.mediaType}" />
            <f:form.hidden name="search[sortOrder]" value="{searchParams.sortOrder}" />
            <f:form.hidden name="search[group]" value="{searchParams.group}" />
            <f:form.hidden name="search[languageUid]" value="{searchParams.languageUid}" />
            <f:form.hidden name="search[desc]" value="{searchParams.desc}" />
            <f:form.hidden name="search[numberOfResults]" value="{searchParams.numberOfResults}" />
            <f:form.hidden name="search[extendedSearch]" value="{searchParams.extendedSearch}" />
        </div>
        <fieldset>
            <legend><f:translate key="form.legend" /></legend>
            <div class="tx-indexedsearch-form">
                <label for="tx-indexedsearch-searchbox-sword"><f:translate key="form.searchFor" />:</label>
                <f:form.textfield name="search[sword]" value="{sword}" id="tx-indexedsearch-searchbox-sword" class="tx-indexedsearch-searchbox-sword" />
            </div>
            <f:if condition="{searchParams.extendedSearch}">
                <f:if condition="{showTypeSearch}">
                    <div class="tx-indexedsearch-search-for">
                        <label for="tx-indexedsearch-selectbox-searchtype"><f:translate key="form.match" />:</label>
                        <f:if condition="{allSearchTypes}">
                            <f:form.select name="search[searchType]" options="{allSearchTypes}" value="{searchParams.searchType}" id="tx-indexedsearch-selectbox-searchtype" class="tx-indexedsearch-selectbox-searchtype" />
                        </f:if>
                        <f:if condition="{allDefaultOperands}">
                            <f:form.select name="search[defaultOperand]" options="{allDefaultOperands}" value="{searchParams.defaultOperand}" id="tx-indexedsearch-selectbox-defaultoperand" class="tx-indexedsearch-selectbox-defaultoperand" />
                        </f:if>
                    </div>
                </f:if>
                <f:if condition="{showMediaAndLanguageSearch}">
                    <div class="tx-indexedsearch-search-in">
                        <label for="tx-indexedsearch-selectbox-media"><f:translate key="form.searchIn" />:</label>
                        <f:if condition="{allMediaTypes}">
                            <f:form.select name="search[mediaType]" options="{allMediaTypes}" value="{searchParams.mediaType}" id="tx-indexedsearch-selectbox-media" class="tx-indexedsearch-selectbox-media media" />
                        </f:if>
                        <f:if condition="{allLanguageUids}">
                            <f:form.select name="search[languageUid]" options="{allLanguageUids}" value="{searchParams.languageUid}" id="tx-indexedsearch-selectbox-lang" class="tx-indexedsearch-selectbox-lang lang" />
                        </f:if>
                    </div>
                </f:if>
                <f:if condition="{allSections}">
                    <div class="tx-indexedsearch-search-select-section">
                        <label for="tx-indexedsearch-selectbox-sections"><f:translate key="form.fromSection" />:</label>
                        <f:form.select name="search[sections]" options="{allSections}" value="    {searchParams.sections}" id="tx-indexedsearch-selectbox-sections" class="tx-indexedsearch-selectbox-sections" />
                    </div>
                </f:if>
                <f:if condition="{allIndexConfigurations}">
                    <div class="tx-indexedsearch-search-freeindexuid">
                        <label for="tx-indexedsearch-selectbox-freeIndexUid"><f:translate key="form.freeIndexUid" />:</label>
                        <f:form.select name="search[freeIndexUid]" options="{allIndexConfigurations}" value="{searchParams.freeIndexUid}" id="tx-indexedsearch-selectbox-freeIndexUid" class="tx-indexedsearch-selectbox-freeIndexUid" />
                    </div>
                </f:if>
                <f:if condition="{showSortOrders}">
                    <div class="tx-indexedsearch-search-select-order">
                        <label for="tx-indexedsearch-selectbox-order"><f:translate key="form.orderBy" />:</label>
                        <f:form.select name="search[sortOrder]" options="{allSortOrders}" value="{searchParams.sortOrder}" id="tx-indexedsearch-selectbox-order" class="tx-indexedsearch-selectbox-order" />&nbsp;
                        <f:form.select name="search[sortDesc]"  options="{allSortDescendings}" value="{searchParams.sortDesc}" id="tx-indexedsearch-selectbox-desc" class="tx-indexedsearch-selectbox-desc" />
                    </div>
                </f:if>
                <f:if condition="{allNumberOfResults}">
                    <div class="tx-indexedsearch-search-select-results">
                        <label for="tx-indexedsearch-selectbox-results"><f:translate key="form.atATime" /></label>
                        <f:form.select name="search[numberOfResults]" options="{allNumberOfResults}" value="{searchParams.numberOfResults}" id="tx-indexedsearch-selectbox-results" class="tx-indexedsearch-selectbox-results" />
                    </div>
                </f:if>
            </f:if>
            <div class="tx-indexedsearch-search-submit">
                <f:form.submit name="search[submitButton]" value="{f:translate(key: 'form.submit')}" id="tx-indexedsearch-searchbox-button-submit" class="tx-indexedsearch-searchbox-button" />
            </div>
        </fieldset>
    </f:form>
</div>
</html>

Das Partial funktioniert aber nicht und wirft folgenden Fehler aus!

Oops, an error occurred!
Argument 1 passed to TYPO3\CMS\Extbase\Service\ExtensionService::getPluginNameByAction() must be of the type string, null given, called in C:\xampp\htdocs\example\public\typo3\sysext\extbase\Classes\Mvc\Web\Routing\UriBuilder.php on line 609
Julian.​Hofmann ·

Wo verwendest Du dieses Partial?

Wenn Du es *außerhalb* der IndexedSearch verwendest, dann fehlt dem form-ViewHelper bei der Suche nach einem Pluginnamen oder einem Controller die Information. Wenn das Partial innerhalb eines Templates aufgerufen wird, das der Controller der IndexedSearch parst, dann ist der Context klar, und ist der Controller ermittelbar.

Stefan80 ·

Vielen Dank für die Antwort!
Ich benutze es außerhalb, direkt in meinem FluidTemplate. Ich habe die Informationen ergänzt:

<f:form action="search" method="post" id="tx_indexedsearch" pageUid="{settings.targetPid}" extensionName="IndexedSearch" pluginName="Pi2" targetPid="12">

Es scheint aber auch so nicht zu funktionieren. Typo3 wirft einen Fehler aus, ohne nähere Informationen!

Oops, an error occurred! Code: 20201012093434d664c0d4

Julian.​Hofmann ·

Mit einem "config.contentObjectExceptionHandler = 0" im TypoScript wird TYPO3 etwas gesprächiger bei den "Oops"-Meldungen.
Aber nicht vergessen, diese Zeile in Production wieder rauszunehmen. Die ausführlicheren Fehlerinformationen sollten nur für Debugging sichtbar sein.

Stefan80 ·

Für alle die die indexed search über Fluid einbinden wollen:

<f:form action="search" method="post" controller="Search" id="tx_indexedsearch" pageUid="12" extensionName="IndexedSearch" pluginName="Pi2" >

wobei pageUid die Id der Seite ist, in der das Search Plugin eingebunden ist