Alguien me puede ayudar por favor. Me sale este error y no se a que se deba: Fatal error: Uncaught Error: Class ‘\Controllers\IndexContro...

Pregunta de la clase:
MVC, Creando Controllers
Abraham Gomez

Abraham Gomez

Pregunta
studenthace 6 años

Alguien me puede ayudar por favor.

Me sale este error y no se a que se deba:

Fatal error: Uncaught Error: Class ‘\Controllers\IndexController’ not found in C:\xampp\htdocs\phpRepasoPlatzi\public\index.php:54 Stack trace: #0 {main} thrown in C:\xampp\htdocs\phpRepasoPlatzi\public\index.php on line 54.

Ya intente cambiar el nombre de la clase, del archivo, jugué con las diagonales pero sigo sin solucionarlo.

Aqui mi archivo index.php dentro de la carpeta public.

`<?php ini_set('display_errors',1); ini_set('displat_starup_error',1); error_reporting(E_ALL); require_once '../vendor/autoload.php'; use Illuminate\Database\Capsule\Manager as Capsule; use Aura\Router\RouterContainer; $capsule = new Capsule; $capsule->addConnection([ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'cursophp', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]); // Make this Capsule instance available globally via static methods... (optional) $capsule->setAsGlobal(); // Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher()) $capsule->bootEloquent(); $request = Zend\Diactoros\ServerRequestFactory::fromGlobals( $_SERVER, $_GET, $_POST, $_COOKIE, $_FILES ); $routerContainer = new RouterContainer(); $map = $routerContainer->getMap(); $map->get('index','/phpRepasoPlatzi/',[ 'controller' => '\Controllers\IndexController', 'action' => 'indexAction' ]); $map->get('addJob', '/phpRepasoPlatzi/job/add','../addJob.php'); $map->get('addProject', '/phpRepasoPlatzi/project/add','../addProject.php'); $matcher = $routerContainer->getMatcher(); $route = $matcher->match($request); if(!$route) { echo 'No route'; } else{ $handlerData = $route->handler; $controllerName = $handlerData['controller']; $actionName = $handlerData['action']; $controller = new $controllerName; $controller->$actionName(); } ?>

Aqui mi codigo IndexController.php cabe mencionar que yo no hice la carpeta de app, la carpeta de Modals y Controllers la tengo directo en raiz, adapte mi codigo para que funcionara de esa manera.

namespace Controllers; class IndexController { public function indexAction(){ echo 'indexAction'; } }
4 respuestas
para escribir tu comentario
    Kenet Andrés Chungandro Montenegro

    Kenet Andrés Chungandro Montenegro

    studenthace 5 años

    Tienes que revisar lo siguiente:

    • Al inicio del curso cuando creamos el composer.json añadimos el autoload para que cargara nuestras clases que se encuentren dentro de /app/Controllers entonces cuando hacemos la búsqueda composer revisa dentro de app/ pero para ello debes colocar correctamente los namespaces, ví que en tu código tienes sólo namespace Controllers; ese debe ser el problema ya que no existe ese espacio en tu proyecto o más bien composer no busca directamente en la carpeta Controllers, lo que entendería ese namespace como si estuviera en la raíz y por eso no lo encuentra.

    • Verifica que el namespace hace uso del psr-4 " <NamespaceName>(<SubNamespaceNames>)<ClassName> " es decir que el espacio de nombres hace referencia a la ruta en la que está la clase:

      ruta: app/Controllers/IndexController.php namespace App\Controllers;

    Jhon Carlos Romo Ramirez

    Jhon Carlos Romo Ramirez

    studenthace 6 años

    Creo que debe ser así:

    App\Controllers\IndexController
    marco antonio cespedes mamani

    marco antonio cespedes mamani

    studenthace 6 años

    Una de las cosas con las que estaba luchando y facil perdi como 15 minutos de mi vida... es en q el profesor ejecuta su servidor apache directamente a su carpeta de trabajo, por lo que todo el curso esta enteramente a "localhost" = "/"... no veo rapidamente que una modificacion que le hagamos a esta clase la podamos salvar. Supongo que mas adelante si. Conclusión: Error identificado es con tu "RepasoPlatzi" -modifica la ruta de server Apache y prueba

    ...Espero que sea de tu ayuda.

    José Luis Soto

    José Luis Soto

    studenthace 6 años

    creo que el error esta en la linea 38, según yo debería ir así 'controller' => 'Controllers\IndexController', y lo tienes así 'controller' => '\Controllers\IndexController',

    Si te sirve confirmas porfa

Curso de Introducción a PHP 2018

Curso de Introducción a PHP 2018

Domina PHP 7, un lenguaje de código abierto que es rápido, flexible y práctico. Conoce cómo crear desde tu blog personal hasta sitios populares de Internet en este Curso de Introducción a PHP.

Curso de Introducción a PHP 2018
Curso de Introducción a PHP 2018

Curso de Introducción a PHP 2018

Domina PHP 7, un lenguaje de código abierto que es rápido, flexible y práctico. Conoce cómo crear desde tu blog personal hasta sitios populares de Internet en este Curso de Introducción a PHP.