Tazatachan Posted December 22, 2016 Share Posted December 22, 2016 (edited) Desde hace un tipo en mi web http://www.tazatachan.com a algunos, no todos, los clientes les sale este error y no les deja pagar su pedido: Notice: Undefined index: controller in /home/xtowmmwq/public_html/classes/Dispatcher.php on line 775 is not a valid module name. Me he vuelto loco buscando forma de solucionarlo y ya no se que hacer, estoy perdiendo ventas con esto y no se solucionarlo. Esta la función que da el problema, pero el editor que tiene mi hosting no se si me mueve la linea o algo porque no veo que puede ser... Ayuda Please! Daré mi primer primogénito varón a quien me de la solución /** * Retrieve the controller from url or request uri if routes are activated * * @return string */ public function getController($id_shop = null) { if (defined('_PS_ADMIN_DIR_')) { $_GET['controllerUri'] = Tools::getvalue('controller'); } if ($this->controller) { $_GET['controller'] = $this->controller; return $this->controller; } if (isset(Context::getContext()->shop) && $id_shop === null) { $id_shop = (int)Context::getContext()->shop->id; } $controller = Tools::getValue('controller'); if (isset($controller) && is_string($controller) && preg_match('/^([0-9a-z_-]+)\?(.*)=(.*)$/Ui', $controller, $m)) { $controller = $m[1]; if (isset($_GET['controller'])) { $_GET[$m[2]] = $m[3]; } elseif (isset($_POST['controller'])) { $_POST[$m[2]] = $m[3]; } } if (!Validate::isControllerName($controller)) { $controller = false; } // Use routes ? (for url rewriting) if ($this->use_routes && !$controller && !defined('_PS_ADMIN_DIR_')) { if (!$this->request_uri) { return strtolower($this->controller_not_found); } $controller = $this->controller_not_found; $test_request_uri = preg_replace('/(=http:\/\/)/', '=', $this->request_uri); // If the request_uri matches a static file, then there is no need to check the routes, we keep "controller_not_found" (a static file should not go through the dispatcher) if (!preg_match('/\.(gif|jpe?g|png|css|js|ico)$/i', parse_url($test_request_uri, PHP_URL_PATH))) { // Add empty route as last route to prevent this greedy regexp to match request uri before right time if ($this->empty_route) { $this->addRoute($this->empty_route['routeID'], $this->empty_route['rule'], $this->empty_route['controller'], Context::getContext()->language->id, array(), array(), $id_shop); } list($uri) = explode('?', $this->request_uri); if (isset($this->routes[$id_shop][Context::getContext()->language->id])) { foreach ($this->routes[$id_shop][Context::getContext()->language->id] as $route) { if (preg_match($route['regexp'], $uri, $m)) { // Route found ! Now fill $_GET with parameters of uri foreach ($m as $k => $v) { if (!is_numeric($k)) { $_GET[$k] = $v; } } $controller = $route['controller'] ? $route['controller'] : $_GET['controller']; if (!empty($route['params'])) { foreach ($route['params'] as $k => $v) { $_GET[$k] = $v; } } // A patch for module friendly urls if (preg_match('#module-([a-z0-9_-]+)-([a-z0-9_]+)$#i', $controller, $m)) { $_GET['module'] = $m[1]; $_GET['fc'] = 'module'; $controller = $m[2]; } if (isset($_GET['fc']) && $_GET['fc'] == 'module') { $this->front_controller = self::FC_MODULE; } break; } } } } if ($controller == 'index' || preg_match('/^\/index.php(?:\?.*)?$/', $this->request_uri)) { $controller = $this->useDefaultController(); } } $this->controller = str_replace('-', '', $controller); $_GET['controller'] = $this->controller; return $this->controller; } Edited December 22, 2016 by Tazatachan (see edit history) Link to comment Share on other sites More sharing options...
Knowband Plugins Posted December 28, 2016 Share Posted December 28, 2016 The file (Dispatcher.php) is a core file and called when any page in PrestaShop is accessed so unless you have modified it in past it is not possible that it has some problem. Since it is core file and is called on each and every page you should not edit it. The issue that you have mentioned should be coming on certain page where the controller parameter is not set. It must be a page or controller created by a module. The issue is in that module, you should check that with its developer. Link to comment Share on other sites More sharing options...
Tazatachan Posted April 5, 2017 Author Share Posted April 5, 2017 Thanks for the answer! Link to comment Share on other sites More sharing options...
Knowband Plugins Posted April 19, 2017 Share Posted April 19, 2017 Thanks for the answer! Hi, Your Welcome. Link to comment Share on other sites More sharing options...
Recommended Posts