2016-02-24 3 views
0

Я создал автомобильное расширение, которое содержит вид списка и подробный вид. Детальный вид также содержит контактную форму. Это расширение прекрасно работает с RealUrl инвалидов, но и для SEO дружественных URL я включен и настроен RealUrl таким образом я получил следующее поведение для моих URLs:Форма жидкости TYPO3 не работает, если включена realURL

посмотреть список

domain.de/index.php?id=3 -> domain.de/cars/ 

детализированный вид

domain.de/index.php?id=38 -> domain.de/cars/details/ 

детализированный вид + получить параметр автомобиля

domain.de/index.php?id=38&car=200 -> domain.de/cars/details/{brand-model}/ 

Таким образом, переписывание URL-адресов работает правильно, и мои привязки расширения от представления списка к подробному представлению также работают так, как ожидалось, но моя контактная форма на подробном представлении больше не работает.

Fluid разметки моей формы

<f:form action="send" method="post" name="request" section="form" object="{request}"> 
    <fieldset> 
     <label>Salutation<span class="required">*</span> 
      <f:render partial="FormErrors" arguments="{field: 'request.salutation'}" /> 
     </label> 
     <f:form.hidden property="salutation" /> 
     <label> 
      <f:form.radio property="salutation" value="female" />Frau 
     </label> 
     <label> 
      <f:form.radio property="salutation" value="male" />Herr 
     </label> 
    </fieldset> 
    <fieldset> 
     <label for="name">Name<span class="required">*</span> 
      <f:render partial="FormErrors" arguments="{field: 'request.name'}" /> 
     </label> 
     <f:form.textfield property="name" /> 
    </fieldset> 

    .... 

    <fieldset> 
     <f:form.submit class="button" name="send" value="Send" /> 
    </fieldset> 
</f:form> 

Если я осмотреть эту форму с помощью инструментов разработчика я получил следующую разметку:

с RealUrl позволило

<form method="post" name="request" action="cars/details/?tx_foxcars_p1%5Baction%5D=send&amp;cHash=f654ce4fb67a5b5c636508675c18d4c3#form"> 

с realURL отключен

<form method="post" name="request" action="index.php?id=38&tx_foxcars_p1%5Baction%5D=send&cHash=f654ce4fb67a5b5c636508675c18d4c3#form"> 

Я думаю, что это нормально, но если я отправлю форму с помощью realURL, я получил содержимое моей страницы 404. С отключенной функцией realURL она работает как ожидалось.

Мой sendAction выглядит следующим образом:

public function sendAction(\Fox\FoxCars\Domain\Model\Request $request) 
{ 
    $fromEmail = $request->getEmail(); 
    $fromName = $request->getName(); 
    $toEmail = $this->settings['senderEmail']; 
    $toName = $this->settings['senderName']; 
    $subject = $this->settings['subject']; 
    $body = $request->getBody(); 

    $mail = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage'); 
    $mail->setFrom(array($fromEmail => $fromName)); 
    $mail->setTo(array($toEmail => $toName)); 
    $mail->setSubject($subject); 
    $mail->setBody($body, 'text/html'); 
    $mail->send(); 

    if ($mail->isSent()) { 
     $this->redirect('send', null, null, null, $this->settings['confirmPageId']); 
    } 
} 

Но мне кажется, что это действие не будет выполнено, если RealUrl включен.

конфигурации

Мой RealUrl выглядит следующим образом:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'] = array(
    '_DEFAULT' => array(
     'init' => array(
      'enableCHashCache' => true, 
      'appendMissingSlash' => 'ifNotFile,redirect', 
      'adminJumpToBackend' => true, 
      'enableUrlDecodeCache' => true, 
      'enableUrlEncodeCache' => true, 
      'respectSimulateStaticURLs' => false, 
      'emptyUrlReturnValue' => '/', 
     ), 
     'pagePath' => array(
      'type' => 'user', 
      'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main', 
      'spaceCharacter' => '-', 
      'languageGetVar' => 'L', 
      'rootpage_id' => '1', 
     ), 
     'fileName' => array(
      'defaultToHTMLsuffixOnPrev' => 0, 
      'acceptHTMLsuffix' => 1, 
      'index' => array(
       'print' => array(
        'keyValues' => array(
         'type' => 98, 
        ), 
       ), 
      ), 
     ), 
     'fixedPostVars' => array(
      'carsDetailConfiguration' => array(
       array(
        'GETvar' => 'car', 
        'lookUpTable' => array(
         'table' => 'tx_foxcars_domain_model_car', 
         'id_field' => 'uid', 
         'alias_field' => "CONCAT(brand, '-', model)", 
         'addWhereClause' => ' AND NOT deleted', 
         'useUniqueCache' => 1, 
         'useUniqueCache_conf' => array(
          'strtolower' => 1, 
          'spaceCharacter' => '-' 
         ), 
         'languageGetVar' => 'L', 
         'languageExceptionUids' => '', 
         'languageField' => 'sys_language_uid', 
         'transOrigPointerField' => 'l10n_parent' 
        ) 
       ) 
      ), 
      '38' => 'carsDetailConfiguration', 
      'newsDetailConfiguration' => array(
       array(
        'GETvar' => 'tx_news_pi1[news]', 
        'lookUpTable' => array(
         'table' => 'tx_news_domain_model_news', 
         'id_field' => 'uid', 
         'alias_field' => 'title', 
         'useUniqueCache' => 1, 
         'useUniqueCache_conf' => array(
          'strtolower' => 1, 
          'spaceCharacter' => '-', 
         ), 
        ), 
       ), 
      ), 
      '35' => 'newsDetailConfiguration', 
     ), 
     'postVarSets' => array(
      '_DEFAULT' => array(
       'news' => array(
        0 => array(
         'GETvar' => 'tx_news_pi1[news]', 
         'lookUpTable' => array(
          'table' => 'tx_news_domain_model_news', 
          'id_field' => 'uid', 
          'alias_field' => 'title', 
          'useUniqueCache' => 1, 
          'useUniqueCache_conf' => array(
           'strtolower' => 1, 
           'spaceCharacter' => '-', 
          ), 
         ), 
        ), 
       ), 
       'cars' => array(
        0 => array(
         'GETvar' => 'car', 
         'lookUpTable' => array(
          'table' => 'tx_foxcars_domain_model_car', 
          'id_field' => 'uid', 
          'alias_field' => "CONCAT(brand, '-', model)", 
          'useUniqueCache' => 1, 
          'useUniqueCache_conf' => array(
           'strtolower' => 1, 
           'spaceCharacter' => '-', 
          ), 
         ), 
        ), 
       ), 
      ), 
     ), 
    ), 
); 

Может быть, есть ли расконфигурация с RealUrl? Так что realURL ожидает получить параметр «автомобиль», но только получить действие отправки? Так что автомобиль отсутствует и не найден -> 404?

Надеется, что вы можете мне помочь :)

ответ

0

Я забыл добавить

additionalParams="{car: car}" 

к моей форме. Поэтому я изменил

<f:form action="send" method="post" name="request" section="form" object="{request}"> 

в

<f:form action="send" additionalParams="{car: car}" method="post" name="request" section="form" object="{request}"> 

и он работает сейчас :).