Bug #84009
Updated by Sybille Peters over 6 years ago
I had this problem in the following versions: * current master (9.2.0-dev) * current TYPO3_8-7 branch (8.7.11-dev) * 8.7.10 (that's all I tested so far) h2. Steps to reproduce # Insert an invalid url (I used *http//abc.de/sfdsf*) into a content element with the link wizard (external url) # Save the content element: exception is thrown (set configuration presets to "debug" to see exception message) h2. Exception Exception for 8.7.10: <pre><code class="php"> Uncaught TYPO3 Exception #1460629247: No valid handlers found for type: unknown (More information) TYPO3\CMS\Core\LinkHandling\Exception\UnknownLinkHandlerException thrown in file /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/core/Classes/LinkHandling/LinkService.php /var/www/t3coredev/typo3/sysext/core/Classes/LinkHandling/LinkService.php in line 155. 18 35 TYPO3\CMS\Core\LinkHandling\LinkService::asString(array) /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/core/Classes/Html/RteHtmlParser.php: /var/www/t3coredev/typo3/sysext/core/Classes/Html/RteHtmlParser.php: 00566: 00558: } else { 00567: 00559: // Otherwise store the link as <a> tag as default by TYPO3, with the new link service syntax 00568: 00560: $tagAttributes['href'] = $linkService->asString($linkInformation); 00569: 00561: $blockSplit[$k] = '<a ' . GeneralUtility::implodeAttributes($tagAttributes, true) . '>' 00570: 00562: . $this->TS_links_db($this->removeFirstAndLastTag($blockSplit[$k])) . '</a>'; 17 34 TYPO3\CMS\Core\Html\RteHtmlParser::TS_links_db("<p><a href="http//abc.de/sfdsf">invalid link </a></p>") href="http://www.grün-gedruckt.de">existing…href="http//abc.de/sfdsf">invalid url http</a></p>") /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/core/Classes/Html/RteHtmlParser.php: /var/www/t3coredev/typo3/sysext/core/Classes/Html/RteHtmlParser.php: 00230: 00225: break; 00231: 00226: case 'ts_links': 00232: 00227: $value = $this->TS_links_db($value); 00233: 00228: break; 00234: 00229: case 'css_transform': 16 33 TYPO3\CMS\Core\Html\RteHtmlParser::RTE_transform("<p><a href="http//abc.de/sfdsf">invalid link </a></p>", href="http://www.grün-gedruckt.de">existing…href="http//abc.de/sfdsf">invalid url http</a></p>", array, "db", array) /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/core/Classes/DataHandling/DataHandler.php: /var/www/t3coredev/typo3/sysext/core/Classes/DataHandling/DataHandler.php: 01783: 01810: $parseHTML = GeneralUtility::makeInstance(RteHtmlParser::class); 01784: 01811: $parseHTML->init($table . ':' . $field, $realPid); 01785: 01812: $valueArray['value'] = $parseHTML->RTE_transform($value, [], 'db', $richtextConfiguration); 01786: 01813: } 01787: 01814: 15 32 TYPO3\CMS\Core\DataHandling\DataHandler::checkValueForText("<p><a href="http//abc.de/sfdsf">invalid link </a></p> href="http://www.grün-gedruckt.de">existing…ef="http//abc.de/sfdsf">invalid url http</a></p> ↵", array, "tt_content", "NEW5a8e8db2b57d9344844565", 2, 184, 332, "bodytext") /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/core/Classes/DataHandling/DataHandler.php: /var/www/t3coredev/typo3/sysext/core/Classes/DataHandling/DataHandler.php: 01656: 01684: switch ($tcaFieldConf['type']) { 01657: 01685: case 'text': 01658: 01686: $res = $this->checkValueForText($value, $tcaFieldConf, $table, $id, $realPid, $field); 01659: 01687: break; 01660: 01688: case 'passthrough': 14 31 TYPO3\CMS\Core\DataHandling\DataHandler::checkValue_SW(array, "<p><a href="http//abc.de/sfdsf">invalid link </a></p> href="http://www.grün-gedruckt.de">existing…ef="http//abc.de/sfdsf">invalid url http</a></p> ↵", array, "tt_content", "NEW5a8e8db2b57d9344844565", 184, "<p><a href="http://www.grün-gedruckt.de">existing…fdsf">not existing link with umlatus (404)</a></p>", "update", 332, NULL, "new", 2, NULL, "bodytext", NULL, 2) 332) /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/core/Classes/DataHandling/DataHandler.php: /var/www/t3coredev/typo3/sysext/core/Classes/DataHandling/DataHandler.php: 01623: 01651: 01624: 01652: // Perform processing: 01625: 01653: $res = $this->checkValue_SW($res, $value, $tcaFieldConf, $table, $id, $curValue, $status, $realPid, $recFID, $field, $this->uploadedFileArray[$table][$id][$field], $tscPID); 01626: 01654: return $res; 01627: 01655: } 13 30 TYPO3\CMS\Core\DataHandling\DataHandler::checkValue("tt_content", "bodytext", "<p><a href="http//abc.de/sfdsf">invalid link </a></p> href="http://www.grün-gedruckt.de">existing…ef="http//abc.de/sfdsf">invalid url http</a></p> ↵", "NEW5a8e8db2b57d9344844565", "new", 2, 2) 184, "update", 332, 332) /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/core/Classes/DataHandling/DataHandler.php: /var/www/t3coredev/typo3/sysext/core/Classes/DataHandling/DataHandler.php: 01513: 01530: if (isset($GLOBALS['TCA'][$table]['columns'][$field])) { 01514: 01531: // Evaluating the value 01515: 01532: $res = $this->checkValue($table, $field, $fieldValue, $id, $status, $realPid, $tscPID); 01516: 01533: if (array_key_exists('value', $res)) { 01517: 01534: $fieldArray[$field] = $res['value']; 12 29 TYPO3\CMS\Core\DataHandling\DataHandler::fillInFieldArray("tt_content", "NEW5a8e8db2b57d9344844565", 184, array, array, 2, "new", 2) 332, "update", 332) /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/core/Classes/DataHandling/DataHandler.php: /var/www/t3coredev/typo3/sysext/core/Classes/DataHandling/DataHandler.php: 01228: 01178: } 01229: 01179: // Processing of all fields in incomingFieldArray and setting them in $fieldArray 01230: 01180: $fieldArray = $this->fillInFieldArray($table, $id, $fieldArray, $incomingFieldArray, $theRealPid, $status, $tscPID); 01231: 01181: $newVersion_placeholderFieldArray = []; 01232: if ($createNewVersion) { $newVersion_p 11 TYPO3\CMS\Core\DataHandling\DataHandler::process_datamap() /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/backend/Classes/Controller/EditDocumentController.php: 00575: // Perform </code></pre> (also I can't scroll in the saving operation with DataHandler: 00576: $tce->process_uploads($_FILES); 00577: $tce->process_datamap(); 00578: $tce->process_cmdmap(); 00579: // If pages are being edited, we set an instruction about updating Exception message window, so I can't get the page tree after this operation. 10 TYPO3\CMS\Backend\Controller\EditDocumentController::processData() /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/backend/Classes/Controller/EditDocumentController.php: 01988: // Checks, if a save button has been clicked (or the doSave variable is sent) 01989: if ($this->doProcessData()) { 01990: $this->processData(); 01991: } 01992: 9 TYPO3\CMS\Backend\Controller\EditDocumentController::mainAction(TYPO3\CMS\Core\Http\ServerRequest, TYPO3\CMS\Core\Http\Response) 8 call_user_func_array(array, array) /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/backend/Classes/Http/RouteDispatcher.php: 00052: $targetIdentifier = $route->getOption('target'); 00053: $target = $this->getCallableFromTarget($targetIdentifier); 00054: return call_user_func_array($target, [$request, $response]); 00055: } 00056: 7 TYPO3\CMS\Backend\Http\RouteDispatcher::dispatch(TYPO3\CMS\Core\Http\ServerRequest, TYPO3\CMS\Core\Http\Response) /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/backend/Classes/Http/RequestHandler.php: 00137: /** @var RouteDispatcher $dispatcher */ 00138: $dispatcher = GeneralUtility::makeInstance(RouteDispatcher::class); 00139: return $dispatcher->dispatch($request, $response); 00140: } 00141: } 6 TYPO3\CMS\Backend\Http\RequestHandler::dispatch(TYPO3\CMS\Core\Http\ServerRequest) /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/backend/Classes/Http/RequestHandler.php: 00070: // Check if the router has the available route and dispatch. 00071: try { 00072: return $this->dispatch($request); 00073: } catch (InvalidRequestTokenException $e) { 00074: // When token was invalid redirect to login 5 TYPO3\CMS\Backend\Http\RequestHandler::handleRequest(TYPO3\CMS\Core\Http\ServerRequest) /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/core/Classes/Core/Bootstrap.php: 00313: 00314: // Execute the command which returns a Response object or NULL 00315: $this->response = $requestHandler->handleRequest($request); 00316: return $this; 00317: } 4 TYPO3\CMS\Core\Core\Bootstrap::handleRequest(TYPO3\CMS\Core\Http\ServerRequest) /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/backend/Classes/Http/Application.php: 00090: } 00091: 00092: $this->bootstrap->handleRequest($this->request); 00093: 00094: if ($execute !== null) { 3 TYPO3\CMS\Backend\Http\Application::run() /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/backend/Resources/Private/Php/backend.php: 00022: $classLoader = require __DIR__ . '/../../../../../../vendor/autoload.php'; 00023: 00024: (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(); 00025: }); 2 {closure}() /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/backend/Resources/Private/Php/backend.php: 00023: 00024: (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run(); 00025: }); 1 require("/var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/sysext/backend/Resources/Private/Php/backend.php") /var/www/t3bare8/htdocs/typo3_src-8.7.10/typo3/index.php: 00001: <?php 00002: 00003: require __DIR__ . '/sysext/backend/Resources/Private/Php/backend.php'; </code></pre> entire exception message, but that's another issue)