Не удается отправить формы Typo3, когда вы не вошли в систему - PullRequest
1 голос
/ 26 января 2012

Я сделал простой плагин с формой, но он не будет публиковаться, когда я не вошел в систему.
Вот файл class.tx_gctest_pi1.php, созданный с помощью Kickstarter.

require_once(PATH_tslib.'class.tslib_pibase.php');

class tx_gctest_pi1 extends tslib_pibase {
    var $prefixId      = 'tx_gctest_pi1';       // Same as class name
    var $scriptRelPath = 'pi1/class.tx_gctest_pi1.php'; // Path to this script relative to the extension dir.
    var $extKey        = 'gc_test'; // The extension key.
    var $pi_checkCHash = true;

    function main($content, $conf) {
        $this->conf = $conf;
        $this->pi_setPiVarDefaults();
        $this->pi_loadLL();

        if($_POST) {
            echo 'test';
        }

        $content='
            <strong>This is a few paragraphs:</strong><br />
            <p>This is line 1</p>
            <p>This is line 2</p>

            <h3>This is a form:</h3>
            <form action="'.$this->pi_getPageLink($GLOBALS['TSFE']->id).'" method="POST">
                <input type="text" name="'.$this->prefixId.'[input_field]" value="'.htmlspecialchars($this->piVars['input_field']).'">
                <input type="submit" name="'.$this->prefixId.'[submit_button]" value="'.htmlspecialchars($this->pi_getLL('submit_button_label')).'">
            </form>
            <br />
            <p>You can click here to '.$this->pi_linkToPage('get to this page again',$GLOBALS['TSFE']->id).'</p>
        ';

        return $this->pi_wrapInBaseClass($content);
    }
}



if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/gc_test/pi1/class.tx_gctest_pi1.php']) {
    include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/gc_test/pi1/class.tx_gctest_pi1.php']);
}

?>

Это выдаст test при входе в систему и ничего, когда не вошел в систему. Страница перезагружена, но сообщение не отправлено

1 Ответ

0 голосов
/ 26 января 2012

Я думаю, что это не имеет большого отношения к входу / выходу из системы. TYPO3 кэширует контент, если вы не указали, чтобы он не кэшировался.

echo var_dump print_r debug - это методы, которые напрямую отображают вещи через php. TYPO3 не ловит их. Если вы хотите, чтобы что-то отображалось, добавьте это, например, в. $content и возврат $content в конце main(). Возвращаемое значение main() кэшируется.

Вы можете попробовать это, очистив свой кеш в бэкэнде и обновив страницу. echo и т. Д. Отображается. после новой перезагрузки его уже нет.

Итак, как это решить? Есть несколько возможностей

  • сделать страницу, содержащую ваш плагин, некэшированной
  • сделать сам плагин не кешированным

Я бы посоветовал вам выяснить, что вы действительно хотите сделать, а затем написать свой код, использующий кеширование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...