29. 05. 2013, 09:49

Hallo,

da mir die Funktionalität von der fe_login extension nicht ausreicht und ich nicht in einer sysext meinen eigenen Code mit reinpfuschen möchte, habe ich mich dazu entschlossen einfach meine eigene Login EXT zu schreiben. Sollte eigentlich nicht weiter schwierig sein dachte ich...aber offensichtlich funktionieren die ViewHelper nicht so wie ich es mir erhofft hatte.

Controller:

  1. /**
  2. * redirect action
  3. *
  4. * @return void
  5. */
  6. public function redirectAction() {
  7. //zum test erst mal auf google redirecten ...
  8. \TYPO3\CMS\Core\Utility\HttpUtility::redirect('http://www.google.at');
  9. }
  10.  
  11. /**
  12. * action index
  13. *
  14. * @return void
  15. */
  16. public function showLoginFormularAction() {
  17. if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['felogin']['loginFormOnSubmitFuncs'])) {
  18. $_params = array();
  19. foreach($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['felogin']['loginFormOnSubmitFuncs'] as $funcRef) {
  20. list($onSub, $hid) = \TYPO3\CMS\Core\Utility\GeneralUtility::callUserFunction($funcRef, $_params, $this);
  21. $onSubmitAr[] = $onSub;
  22. $extraHiddenAr[] = $hid;
  23. }
  24. }
  25.  
  26. if (count($onSubmitAr)) {
  27. $onSubmit = implode('; ', $onSubmitAr).'; return true;';
  28. }
  29.  
  30. if (count($extraHiddenAr)) {
  31. $extraHidden = implode(LF, $extraHiddenAr);
  32. }
  33.  
  34. $this->view->assign('onSubmit', $onSubmit);
  35. $this->view->assign('extraHidden', $extraHidden);
  36. }

Fluid 'code':

  1. <f:layout name="Login"/>
  2. <f:section name="content">
  3. <f:form action="{f:uri.action(action: 'redirect')}" method="post" id="login" class="primary" onsubmit="{onsubmit}">
  4. <div id="login-headline">
  5. <!-- dieses <f:uri.action ist nur zu testzwecken da... -->
  6. <h2><f:uri.action action="redirect"><f:translate id="loginLabel">User login</f:translate></f:uri.action></h2>
  7. </div>
  8. <div id="login-body">
  9. <div id="login-form-fields">
  10. <div class="login-field">
  11. <f:form.textfield id="user" name="user" >
  12. </f:form.textfield>
  13. </div>
  14. <div class="login-field">
  15. <f:form.password id="pass" name="pass" >
  16. </f:form.password>
  17. </div>
  18. <div class="login-field clearfix">
  19. <f:form.submit name="submit" class="login-submit" value="{f:translate(key: 'loginButtonLabel', default: 'Login')}" />
  20. </div>
  21.  
  22. <div class="felogin-hidden">
  23. <f:form.hidden name="logintype" value="login" />
  24. <f:form.hidden name="pid" value="2" />
  25. <f:form.hidden name="redirect_url" value="{settings.redirectUrl}" />
  26. <f:format.html parseFuncTSPath="">{extraHidden}</f:format.html>
  27. </div>
  28. </div>
  29. </div>
  30. </f:form>
  31. </f:section>

  1. #constants
  2. plugin.tx_pllogin {
  3. view {
  4. # cat=plugin.tx_pllogin/file; type=string; label=Path to template root (FE)
  5. templateRootPath = EXT:pl_login/Resources/Private/Templates/
  6. # cat=plugin.tx_pllogin/file; type=string; label=Path to template partials (FE)
  7. partialRootPath = EXT:pl_login/Resources/Private/Partials/
  8. # cat=plugin.tx_pllogin/file; type=string; label=Path to template layouts (FE)
  9. layoutRootPath = EXT:pl_login/Resources/Private/Layouts/
  10. }
  11. persistence {
  12. # cat=plugin.tx_pllogin//a; type=string; label=Default storage PID
  13. storagePid = 2
  14. }
  15. settings {
  16. redirectUrl = http://google.at
  17. }
  18. }
  19.  
  20. #setup
  21. plugin.tx_pllogin {
  22. view {
  23. templateRootPath = {$plugin.tx_pllogin.view.templateRootPath}
  24. partialRootPath = {$plugin.tx_pllogin.view.partialRootPath}
  25. layoutRootPath = {$plugin.tx_pllogin.view.layoutRootPath}
  26. }
  27. persistence {
  28. storagePid = 2
  29. }
  30. features {
  31. # uncomment the following line to enable the new Property Mapper.
  32. # rewrittenPropertyMapper = 1
  33. }
  34. settings {
  35. redirectUrl = {$plugin.tx_pllogin.settings.redirectUrl}
  36. }
  37. }

Problem 1:
{settings.redirectUrl} wird nicht übergeben und ich weiß nicht warum..???
Problem 2:
der die action 'redirect' wird offensichtlich niemals angesprochen. wenn das formular abgesendet wird passiert nämlich gar nichts ?!
Problem 3:
wenn ich bei den ViewHelpern '<f:form.textfield>' placeholder & required mitschicke (also '<f:form.textfield placeholder="{f:translate(id: 'foo', default: 'bar')}" required="1"/>), bekomme ich eine Fehlermeldung, dass das Argument required nicht registriert wurde. Wenn ich dann einfach in den ViewHelper gehe und es dort registriere in der initialize function, dann sagt er mir, dass es nicht registriert werden soll, weil es bereits registriert ist.. ??

Ich weiß einfach nicht wieso und hoffe auf kompetente Hilfe.

Lg
hoobeN