2012-01-26 2 views
1

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

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']); 
} 

?> 

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

+4

Похоже, вы должны сделать свой плагин USER_INT. Детали: http://stackoverflow.com/questions/293021/typo3-setting-plugin-as-of-the-user-int-type –

ответ

0

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

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

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

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

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

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

+0

Плагин просто будет немного форма, в которой пишет пользователь их адреса электронной почты и плагин отправят им электронное письмо и сохранят некоторые вещи в базе данных. Как сделать плагин недоступным? – Patrik

+2

У этого ** есть ** отношение к тому, что вы (не) вошли в систему. Ваше расширение не может работать при кэшировании, потому что его просто не вызывают. При входе в систему TYPO3 отключает кеширование, и именно поэтому он работает. Решение заключается в отключении кэширования вашего плагина. См. Ссылку, которую Федор опубликовал как комментарий к вашему вопросу, и см. Ответ Мехди Гермази. – tmt

Смежные вопросы