createAction in eigener Blog-Extension funktioniert nicht (ExtBase)

  • Five Five
    T3PO
    0 x
    21 Beiträge
    0 Hilfreiche Beiträge
    16. 07. 2013, 11:54

    Ich versuche mich gerade an meiner ersten ExtBase 6.0 Extension, hab aber damit noch so einige Probleme.
    Aktuelle scheitere ich daran, einen Kommentar zu einem Blog-Eintrag über die createAction abzuspeichern.

    So sehen meine Templates aus:
    [b]Layout/Default.html:[/b]

    1. <f:flashMessages />
    2. <f:render section="main" />

    Hier werden die Templates Templates/Entry/List.html und Templates/Comment/New.html angezeigt.

    [b]Templates/Entry/List.html:[/b]

    1. {namespace helper=TYPO3\PsExtbaseexample\ViewHelpers}
    2. <f:layout name="Default" />
    3. <f:section name="main">
    4. <f:flashMessages />
    5.  
    6. <f:for each="{entries}" as="entry">
    7. <div class="<helper:extKey />_entry">
    8. <div class="<helper:extKey />_header">
    9. <f:translate key="tx_psextbaseexample_entry.title" />&nbsp;
    10. <f:link.action action="show" arguments="{entry:entry}">{entry.title}</f:link.action>
    11. <div class="<helper:extKey />_date"><f:translate key="tx_psextbaseexample_entry.date" /> <f:format.date format="d.m.Y, H:i:s">{entry.date}</f:format.date>&nbsp;</div>
    12. </div>
    13. <div style="clear: right"></div>
    14. <div class="<helper:extKey />_text">
    15. <div class="<helper:extKey />_textspacer">
    16. <strong><f:translate key="tx_psextbaseexample_entry.text" /></strong><br />
    17. <f:format.html>{entry.text}</f:format.html>
    18. </div>
    19. </div>
    20. <div class="<helper:extKey />_comments">
    21. <f:render partial="Comment/List" arguments="{
    22. id:entry.uid,
    23. comments:entry.comment
    24. }" />
    25. <f:link.action action="new" controller="Comment"><f:translate key="tx_psextbaseexample_entry.commentNew" /></f:link.action>
    26. </div>
    27. </div>
    28. </f:for>
    29.  
    30. </f:section>

    Das Partial Partials/Comment/List.html sieht so aus:
    [b]Partials/Comment/List.html[/b]

    1. {namespace helper=TYPO3\PsExtbaseexample\ViewHelpers}
    2.  
    3. <f:for each="{comments}" as="comment">
    4. <div class="<helper:extKey />_comment">
    5. <f:translate key="tx_psextbaseexample_entry.commentDate" /> <f:format.date format="d.m.Y, H:i:s">{comment.date}</f:format.date>,<br />
    6. {comment.text}
    7. </div>
    8. </f:for>

    Zuletzt noch das New-Template, mit dem ich einen Kommentar zu einem Blog-Eintrag speichern möchte:
    [b]Templates/Comment/New.html[/b]

    1. {namespace helper=TYPO3\PsExtbaseexample\ViewHelpers}
    2. <f:layout name="Default" />
    3. <f:section name="main">
    4.  
    5. <h3><f:translate key="tx_psextbaseexample_entry.commentNew" /></h3>
    6. <f:flashMessages />
    7. <f:render partial="FormErrors" arguments="{object:Comment}" />
    8.  
    9. <f:form action="create" name="newComment" object="newComment">
    10. <f:translate key="tx_psextbaseexample_entry.commentText" /><br />
    11. <f:form.textarea property="text" name="text" /><br />
    12. <f:form.hidden property="date" name="date" value="1373964122" />
    13. <f:form.submit name="submit" value="{f:translate(key: 'tx_psextbaseexample_entry.saveNewComment', default: '[Submit]')}" />
    14. </f:form>
    15.  
    16. </f:section>

    Nun weiß ich nicht mal, ob das Formular so überhaupt funktionieren kann. Ich hab's mehr oder weniger so aus dem Extension Builder übernommen.
    Wenn ich das Formular abschicke kommt folgende Meldung:

    [i][b]An error occurred while trying to call TYPO3\PsExtbaseexample\Controller\CommentController->createAction()[/b][/i]

    Die createAction() Funktion macht allerdings nur das:

    1. /**
    2.  * action new
    3.  *
    4.  * @param \TYPO3\PsExtbaseexample\Domain\Model\Comment $newComment
    5.  * @dontvalidate $newComment
    6.  * @return void
    7.  */
    8. public function newAction(\TYPO3\PsExtbaseexample\Domain\Model\Comment $newComment = NULL) {
    9. $this->view->assign('newComment', $newComment);
    10. }
    11.  
    12. /**
    13.  * action create
    14.  *
    15.  * @param \TYPO3\PsExtbaseexample\Domain\Model\Comment $newComment
    16.  * @return void
    17.  */
    18. public function createAction(\TYPO3\PsExtbaseexample\Domain\Model\Comment $newComment) {
    19. $this->commentRepository->add($newComment);
    20. $this->flashMessageContainer->add('Your new Comment was created.');
    21. $this->redirect('list');
    22. }

    Wo mach ich da was falsch, bzw. kann das überhaupt so funktionieren?


  • 1
  • krisc krisc
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    22. 07. 2013, 18:06

    Hallo,

    hast du die Möglichkeit, in einem error.log nachzusehen, was genau der Fehler ist? Die genannte Fehlermeldung ist ja nicht so aussagekräftig.

    Hier hatte jemand ein ähnliches problem, dass sich dann aber von selbst erledigt hat:
    [url]http://stackoverflow.com/questions/9094532/an-error-occurred-while-trying-to-call-controller-createaction[/url]

    Nebenbei bemerkt: Evtl. musst du in die newAction() noch einen Fix einbauen (siehe [url]http://forum.typo3.org/index.php/t/194570/[/url]):

    1. if ($newComment == NULL) {
    2. $newComment = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('\TYPO3\PsExtbaseexample\Domain\Model\Comment');
    3. }

  • 1