{"type":"rich","version":"1.0","provider_name":"phorkie","provider_url":"https:\/\/p.cweiske.de\/","title":"extbase controller handle exception","author_name":"Christian Weiske","cache_age":86400,"width":900,"height":900,"html":"<!-- embedding all files of https:\/\/p.cweiske.de\/350 -->\n<link rel=\"stylesheet\" href=\"https:\/\/p.cweiske.de\/css\/embed.css\"\/>\n<div class=\"phork\" id=\"350\">\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\">\/**\n * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\n * (http:\/\/qbnz.com\/highlighter\/ and http:\/\/geshi.org\/)\n *\/\n.php .de1, .php .de2 {font: normal normal 1em\/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\n.php  {font-family:monospace;}\n.php .imp {font-weight: bold; color: red;}\n.php li, .php .li1 {color: #DDD;}\n.php .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\n.php .kw1 {color: #b1b100;}\n.php .kw2 {color: #000000; font-weight: bold;}\n.php .kw3 {color: #990000;}\n.php .kw4 {color: #009900; font-weight: bold;}\n.php .co1 {color: #666666; font-style: italic;}\n.php .co2 {color: #666666; font-style: italic;}\n.php .co3 {color: #0000cc; font-style: italic;}\n.php .co4 {color: #009933; font-style: italic;}\n.php .coMULTI {color: #666666; font-style: italic;}\n.php .es0 {color: #000099; font-weight: bold;}\n.php .es1 {color: #000099; font-weight: bold;}\n.php .es2 {color: #660099; font-weight: bold;}\n.php .es3 {color: #660099; font-weight: bold;}\n.php .es4 {color: #006699; font-weight: bold;}\n.php .es5 {color: #006699; font-weight: bold; font-style: italic;}\n.php .es6 {color: #009933; font-weight: bold;}\n.php .es_h {color: #000099; font-weight: bold;}\n.php .br0 {color: #009900;}\n.php .sy0 {color: #339933;}\n.php .sy1 {color: #000000; font-weight: bold;}\n.php .st0 {color: #0000ff;}\n.php .st_h {color: #0000ff;}\n.php .nu0 {color: #cc66cc;}\n.php .nu8 {color: #208080;}\n.php .nu12 {color: #208080;}\n.php .nu19 {color:#800080;}\n.php .me1 {color: #004000;}\n.php .me2 {color: #004000;}\n.php .re0 {color: #000088;}\n.php span.xtra { display:block; }\n<\/style><div class=\"code\"><table class=\"php\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59\n60\n61\n62\n63\n64\n65\n66\n67\n68\n69\n70\n71\n72\n73\n74\n75\n76\n77\n78\n79\n80\n81\n82\n83\n84\n85\n86\n87\n88\n89\n90\n91\n92\n93\n94\n95\n96\n97\n98\n99\n100\n101\n102\n103\n104\n105\n106\n107\n108\n109\n110\n111\n112\n113\n114\n115\n116\n117\n118\n119\n120\n121\n122\n123\n124\n125\n126\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\"><span class=\"kw2\">&lt;?php<\/span>\n<span class=\"kw2\">namespace<\/span> Mogic\\Extname\\Controller<span class=\"sy0\">;<\/span>\n&#160;\n<span class=\"kw2\">use<\/span> TYPO3\\CMS\\Core\\Error\\Http\\PageNotFoundException<span class=\"sy0\">;<\/span>\n<span class=\"kw2\">use<\/span> TYPO3\\CMS\\Extbase\\Mvc\\Controller\\ActionController<span class=\"sy0\">;<\/span>\n&#160;\n<span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160;* Controller base class that catches exceptions and displays them nicely<\/span>\n<span class=\"co4\">&#160;*<\/span>\n<span class=\"co4\">&#160;* @author Christian Weiske &lt;weiske@mogic.com&gt;<\/span>\n<span class=\"co4\">&#160;*\/<\/span>\nabstract <span class=\"kw2\">class<\/span> AbstractExceptionHandlingController <span class=\"kw2\">extends<\/span> ActionController\n<span class=\"br0\">&#123;<\/span>\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Message to show when an element is not found (404)<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @var string<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">protected<\/span> <span class=\"re0\">$notFoundMessage<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'Element not found'<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Message to show when an unknown error occurs (e.g. API exception)<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @var string<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">protected<\/span> <span class=\"re0\">$genericErrorMessage<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'Es ist ein schwerer Fehler aufgetreten.'<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* We currently do not need this.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Handles a request.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* The result output is returned by altering the given response.<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param object $request &#160;The request object<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param object $response The response, modified by this handler<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return void<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> DEACTprocessRequest<span class=\"br0\">&#40;<\/span>\n&#160; &#160; &#160; &#160; \\TYPO3\\CMS\\Extbase\\Mvc\\RequestInterface <span class=\"re0\">$request<\/span><span class=\"sy0\">,<\/span>\n&#160; &#160; &#160; &#160; \\TYPO3\\CMS\\Extbase\\Mvc\\ResponseInterface <span class=\"re0\">$response<\/span>\n&#160; &#160; <span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; try <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; parent<span class=\"sy0\">::<\/span><span class=\"me2\">processRequest<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$request<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$response<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span> catch <span class=\"br0\">&#40;<\/span>PageNotFoundException <span class=\"re0\">$e<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">handleNotFoundError<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$e<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span> catch <span class=\"br0\">&#40;<\/span>\\Exception <span class=\"re0\">$e<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">handleGenericError<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$e<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Call the correct action method<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return void<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> callActionMethod<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; try <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; parent<span class=\"sy0\">::<\/span><span class=\"me2\">callActionMethod<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span> catch <span class=\"br0\">&#40;<\/span>PageNotFoundException <span class=\"re0\">$e<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">handleNotFoundError<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$e<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span> catch <span class=\"br0\">&#40;<\/span>\\Exception <span class=\"re0\">$e<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">handleGenericError<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$e<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Handle a &quot;element not found&quot;-exception<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param object $exception Exception<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return void<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> handleNotFoundError<span class=\"br0\">&#40;<\/span>\\Exception <span class=\"re0\">$e<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"co1\">\/\/$GLOBALS['TSFE']-&gt;pageNotFoundAndExit($this-&gt;notFoundMessage);<\/span>\n&#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">renderError<\/span><span class=\"br0\">&#40;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"st_h\">'typo3conf\/ext\/extname\/Resources\/Private\/Templates\/Error\/NotFound.html'<\/span><span class=\"sy0\">,<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">notFoundMessage<\/span><span class=\"sy0\">,<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"re0\">$e<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">response<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">setStatus<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">404<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Handle a generic undetermined error<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param object $exception Exception<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return void<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">public<\/span> <span class=\"kw2\">function<\/span> handleGenericError<span class=\"br0\">&#40;<\/span>\\Exception <span class=\"re0\">$e<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"coMULTI\">\/*<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160; &#160; $GLOBALS['TSFE']-&gt;pageUnavailableAndExit(<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160; &#160; &#160; &#160; $this-&gt;genericErrorMessage,<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160; &#160; &#160; &#160; 'HTTP\/1.1 500 Internal Server Error'<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160; &#160; );<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160; &#160; \/**\/<\/span>\n&#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">renderError<\/span><span class=\"br0\">&#40;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"st_h\">'typo3conf\/ext\/extname\/Resources\/Private\/Templates\/Error\/Generic.html'<\/span><span class=\"sy0\">,<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">genericErrorMessage<\/span><span class=\"sy0\">,<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"re0\">$e<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">response<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">setStatus<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">500<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; <span class=\"co4\">\/**<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* Render an error message into a template<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $templateFile Template path<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param string $message &#160; &#160; &#160;Error message<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @param object $e &#160; &#160; &#160; &#160; &#160; &#160;Exception that caused this error message<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*<\/span>\n<span class=\"co4\">&#160; &#160; &#160;* @return void<\/span>\n<span class=\"co4\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; <span class=\"kw2\">protected<\/span> <span class=\"kw2\">function<\/span> renderError<span class=\"br0\">&#40;<\/span><span class=\"re0\">$templateFile<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$message<\/span><span class=\"sy0\">,<\/span> \\Exception <span class=\"re0\">$e<\/span><span class=\"br0\">&#41;<\/span>\n&#160; &#160; <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">view<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">setTemplatePathAndFilename<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$templateFile<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">view<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">assign<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'error'<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$message<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">view<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">assign<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'exception'<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$e<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">response<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">setContent<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$this<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">view<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">render<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n<span class=\"br0\">&#125;<\/span>\n<span class=\"sy1\">?&gt;<\/span>\n&#160;<\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/350\/rev-raw\/1a66461d90c2f80499a6f2eae7fbde0b275824fc\/AbstractExceptionHandlingController.php\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/350#AbstractExceptionHandlingController.php\">AbstractExceptionHandlingController.php<\/a>\n <\/div>\n<\/div>\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  \n<div class=\"document\">\n\n\n<ul class=\"simple\">\n<li><a class=\"reference external\" href=\"http:\/\/blog.mindscreen.de\/2013\/404-handling-statt-exception-in-extbase-catching-1297759968\/\">http:\/\/blog.mindscreen.de\/2013\/404-handling-statt-exception-in-extbase-catching-1297759968\/<\/a><\/li>\n<li><a class=\"reference external\" href=\"http:\/\/nerdcenter.de\/extbase-fehlerbehandlung\/\">http:\/\/nerdcenter.de\/extbase-fehlerbehandlung\/<\/a><\/li>\n<\/ul>\n<\/div>\n\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/350\/rev-raw\/1a66461d90c2f80499a6f2eae7fbde0b275824fc\/links.rst\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/350#links.rst\">links.rst<\/a>\n <\/div>\n<\/div>\n<\/div>\n"}
