Décrivez ici votre problème ou ce que vous cherchez à faire.


**ContactController.php **

<?php declare(strict_types = 1);

namespace App\Controllers;

use App\Classes\Mail;
use Ben\Foundation\AbstractController;
use Ben\Foundation\Authentication as auth;
use Ben\Foundation\Session;
use Ben\Foundation\Validator;
use Ben\Foundation\View;

class ContactController extends AbstractController {

    public function form(): void    {

        {
            if (!Auth::check()) {       
                $this->redirect('login.form');   
            }

            $validator = Validator::get($_POST);     
            $validator->mapFieldsRules([   
                'surname'   => ['required', ['lengthMin', 5]],  
                'firstname' => ['required', ['lengthMin', 5]], 
                'email'     => ['required', 'email'],  
                'message'   => ['required', ['lengthMin', 5]],         
            ]);

            if (!$validator->validate()) {     // si jamais il y a une erreur on va devoir faire 3 choses 

                Session::addFlash(Session::ERRORS, array_column($validator->errors(), 0)); // la 1ere, on va devoir ajouter une variable de session flash errors pour venir indiquer les differents messages d'erreur que j'ai recuperer avec mon validator  
                Session::addFlash(Session::OLD, $_POST);                                   // la 2eme on va devoir ajouter une variable de session flash pour recuperer les anciennes valeurs de mes champs pour reremplir le formulaire correctement avec le nom complet et l'adresse email qui avait etait utiliser 
                $this->redirect('index.form');                                            
            } 

            View::render('index');  
        }

        {
            $mail = new Mail();
            $mail-> send("serroukh94@gmail.com", "mohamed", 'essai'
            , "essi");

        };
       }

}

**classe mail :**

<?php

namespace app\Classes;

  use \Mailjet\Resources;

  $mj = new \Mailjet\Client('cdc60003c851daefb60f0824ec30f21a','4d5ad9a7ac5d83738a71511231c4c5b9',true,['version' => 'v3.1']);
  $email = htmlspecialchars($_POST['email']);
  if(filter_var($email, FILTER_VALIDATE_EMAIL)){
  $body = [
    'Messages' => [
      [
        'From' => [
          'Email' => "no-reply@square-blog.test",
          'Name' => "Mohamed"
        ],
        'To' => [
          [
            'Email' => "serroukh94@gmail.com",
            'Name' => "Mohamed"
          ]
        ],
        'Subject' => "Demande de renseignement.",
        'TextPart' => "My first Mailjet email",
        'HTMLPart' => "<h3>Dear passenger 1, welcome to <a href='https://www.mailjet.com/'>Mailjet</a>!</h3><br />May the delivery force be with you!",
        'CustomID' => "AppGettingStartedTest"
      ]
    ]
  ];
  $response = $mj->post(Resources::$Email, ['body' => $body]);
  $response->success() ;
  echo "Email envoyé avec succès !";
        }
        else{
            echo "Email non valide";
        }

?>

Ce que je veux

Bonjour j'ai un problème avec ce controller : lorsque je lance la page faisant appel au controller j'obtiens le message suivant :

fatal error : Uncaught Error : Class "app\Class\Mail" not found in in /home/vagrant/square-blog/app/Controllers/ContactController.php

J'essai de faire fonctionner mailjet avec un formulaire.

Pourtant j'ai bien indiqué l'emplacement de ma classe mail.

Ce que j'obtiens

fatal error : Uncaught Error : Class "app\Class\Mail" not found in in /home/vagrant/square-blog/app/Controllers/ContactController.php

au lieu de l'envoi de mon formulaire.

Quelqu'un pourrait-il m'aider sur le sujet

Cordialement.

Lionel

2 réponses


Bonjour,

ça donne quoi si tu remplace :

namespace app\Classes;

par

namespace App\Classes;

?

Bonsoir.
Ton problème me parait plutôt normal, étant donné que dans le second fichier tu indiques bien le namespace, sauf qu'il ne contient pas une classe, mais seulement du code PHP.
Par conséquent tu auras beau essayer ce que tu veux avec le code actuel, ça ne fonctionnera pas, ni utiliser une quelconque méthode, ni utiliser la soit disante classe.
Tu devrais peut-être revoir les bases de la POO.