файл php typo3 в функции контроллера доступа к общим папкам


Существует ли какая-либо возможность доступа к функции контроллера из файла php, основанного на resource/public/php/file.php

Я хочу, чтобы этот php-файл был специальным файлом, который я использую для этого:

<img src="file.php"></img> 

Я отключу читаемые пути. Таким образом, этот php-файл выполняет некоторое шифрование и нуждается в подключении к обычной функции контроллера.

Спасибо

Author: Felix, 2015-09-22

1 answers

Существует ли какая-либо возможность доступа к функции контроллера из файла php, основанного на resource/public/php/file.php

Да, это возможно, но для этого вам также необходимо bootstrap ядро TYPO3. Или, если это метод static и public, вы можете вызвать его напрямую.

Но в вашем случае это кажется неправильным способом сделать это.

Предполагая, что вы работаете над какой-то капчей, вы должны рассмотреть свой собственный page type для рендеринга dynamic images. Вот рабочий пример:

Настройка типоскрипта

В типоскрипте мы регистрируем наш собственный page typ и указываем на него нашему extension, controller и action:

DynamicCaptchaImage = PAGE
DynamicCaptchaImage {

    typeNum = 1234

    10 = USER_INT
    10 {
        userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
        pluginName = Pi1
        extensionName = MyExtName
        vendorName = MyCompanyName
        controller = MyExtbaseController
        action = renderCaptchaImage
        # view =< plugin.tx_myextname.view  // you provide the view yourself
        # persistence =< plugin.tx_myextname.persistence // in case you need a repository you should uncomment it
        settings =< plugin.tx_myextname.settings
    }

    config {
        disableAllHeaderCode = 1
        additionalHeaders = Content-Type: image/png
        xhtml_cleaning = 0
        admPanel = 0
        debug = 0
    }
}

См. также: Регистрация пользовательского доступа к контроллеру на основе typeNum

Контроллер

Вот пример того, как должны выглядеть ваши controller и action:

<?php
namespace MyCompanyName\MyExtName\Controller;

/**
 * MyExtbaseController
 */
class MyExtbaseController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {

    /**
     * Render Captcha Image Action
     *
     * @return void
     */
    public function renderCaptchaImageAction() {

        // Send some headers
        header('Content-Type: image/png');

        // < do your magic stuff here >

        // Breaks the script because we've sent already some headers and want
        // to prevent that TYPO3 is adding another stuff (eg. for debugging purposes)
        // that can break the image from loading.
        // return FALSE; does not stop doing that!
        exit;
    }

}

См. также: Вики-сайт Extbase

Доступ к контроллер

Теперь мы настроили пользовательский page type нам разрешен доступ к контроллеру, вызвав page type, указанный в настройке TypoScript.

Например. http://www.example.com?type=1234 указывает на renderCaptchaImageAction() в MyExtbaseController.

Текучая среда

В Fluid вы можете связать с page type, который вы настроили:

<img src="{f:link.page(pageType: 1234)}" />

См. также: Жидкая вики

Реальный

Если вы используете расширение realurl вы можете изменить ?type=1234 на captcha.png с помощью:

// [...]
'fileName' => array(
    'index' => array(
        'captcha.png' => array(
            'keyValues' => array(
                'type' => 1234,
            ),
        ),
    ),
),
// [...]

См. также: Вики-страница Realurl

 7
Author: Arek van Schaijk, 2015-09-22 21:28:24