Fatal Error Calendrier PHP

Par Ratila, il y a 7 ans


Bonjour,

Voila je rencontre un petit problème avec mon code réaliser avec les vidéos de Grafikart sur le calendrier en PHP.

Ce que je fais

Je cherche à pouvoir utiliser la fonctionnaliter "Modifier l'évenement" mais quand je clique sur ce bouton j'obtiens un :
"Fatal error: Class 'App\Validator' not found in D:\CalendrierFinal\src\Calendar\EventValidator.php on line 7".

Je conclus donc que ma classe EventValidator n'arrive pas à trouver la classe Validator alors que celle ci devrait être visible et ne devrais pas poser de soucis...

namespace Calendar; use App\Validator; class EventValidator extends Validator { /** * @param array $data * @return array|bool */ public function validates(array $data) { parent::validates($data); $this->validate('name', 'minLength', 3); $this->validate('date', 'date'); $this->validate('start', 'beforeTime', 'end'); return $this->errors; } }

Et voici également un screen pour que vous puissiez voir que les deux classes sont bien dans le dossier "src".

https://puu.sh/Aovec/0eefb03a8b.png

Et si jamais quelqu'un d'entre vous pourrais m'aiguiller sur comment réaliser le bouton "delete" présent dans la classe Events.php je serais pas contre :)

public function update(Event $event): bool { $statement = $this->pdo->prepare('UPDATE events SET name = ?, description = ?, start = ?, end = ? WHERE id = ?'); return $statement->execute([ $event->getName(), $event->getDescription(), $event->getStart()->format('Y-m-d H:i:s'), $event->getEnd()->format('Y-m-d H:i:s'), $event->getId() ]); } /** * @param Event $event * @return bool */ public function delete(Event $event): bool { }

Bonne journée à vous et je vous remercie d'avance.

6 réponses

Balsakup, il y a 7 ans

Salut,

Ton bouton n'est pas le problème, ton problème c'est la classe App\Validator, ton autoloader est peut être mal généré.

Ratila, il y a 7 ans

Merci de ta réponse rapide Balsakup,
c'est vrai que la partie avec l'autoloader je n'ai pas tout compris, mais ayant suivant le tuto il ne devrait pas y avoir de problème. Si cela peut nous avancer voici ma classe autoload.php .

Tout simplement :

<?php // autoload.php @generated by Composer require_once __DIR__ . '/composer/autoload_real.php'; return ComposerAutoloaderInite92c4c3640745b50cabb508de601c014::getLoader();

Peut-etre re effectuer un autoload ?

Balsakup, il y a 7 ans

C'est ton composer.json qu'il nous faut pour voir. Car cette classe là est générée automatiquement par composer. Elle est donc "parfaite" à partir du moment que t'as bien remplis ton composer.json

Ratila, il y a 7 ans

Aussitot demandé, aussitot donné.

{ "name": "jerome/calendar", "authors": [ { "name": "Jérôme", "email": "contact@test.fr" } ], "autoload": { "psr-4": { "Calendar\\": "src/Calendar" } }, "require": {} }

Je te montre aussi l'arborescence du dossier si ça peut t'aider à comprendre mon soucis.
https://puu.sh/AoEgc/862293866d.png

SLK, il y a 7 ans

Salut,

essaie de changer le psr-4 comme ça pour voir :

"psr-4": { "src\\": "src/" }
Balsakup, il y a 7 ans

Ton namespace dans ton composer.json est Calendar, alors que toi tu essaies de charger une classe dans le namespace App.
Ajoute la ligne dans l'objet psr-4

"App\\": "src/App"

Tu devrais avoir ça

"psr-4": { "Calendar\\": "src/Calendar", "App\\": "src/App" }

puis exécute la commande composer dump-autoload.

@SLK arrête de dire des bétises, ton autoload ne marchera jamais comme ça