rollincode / RCPaiementCMCICBundle

Bundle Symfony 2 de paiement pour les banques Credit Mutuel et Crédit Industriel et Commercial - paiement cmcic bundle
0 stars 6 forks source link

Expected argument of type "string" #5

Closed xorgxx closed 7 years ago

xorgxx commented 7 years ago

Bonjour, j'ai un problème avec le "SamplePaiementController".

je fais des tests avec le code (sample) :

    public function paiementAllerAction()
    {
        $tarif = 400;
        $servicePaiement = $this->get('rc.paiementcmcic_tpe');

        // On retourne un objet Paiement initialisé par défaut avec les données de la config
        $paiement = $servicePaiement->getPaiementObjet($tarif, $this->getUser()->getEmail());
        $paiement->setTexteLibre('test');

        /*
         * Ici on peut appeller d'autres setters sur notre objet paiement initialisé ex echeance ou tout autre infos non obligatoire
         * Il faut bien appeller la méthode handleMac a la fin car elle va générer une chaine de caractère unique grâce à la clé commercant
         * afin de protéger les données et éviter qu'ils soient modifiés par une personne mal intentionnée
         */

        $servicePaiement->handleHmac($paiement);
//
// ----------------> BLOQUE 
        $form = $this->createForm(new PaiementType(), $paiement,
            array(
                'method' => 'POST',
                'action' => $servicePaiement->getUrlPaiement(),
            )
        );
// ----------------> BLOQUE 
        return $this->render(
            'RCPaiementCMCICBundle:Paiement:paiement_form.html.twig',
            array(
                'form' => $form->createView(),
            )
        );
    }

dans la creation du "Form" il ne retour une erreur : `Expected argument of type "string", "RC\PaiementCMCICBundle\Form\Type\PaiementType" given

Je suis sous Windows10 64, Sf 3.2.1, PHP version 5.6.19 .

Merci.

xorgxx commented 7 years ago

je viens de faire un test avec :

//new PaiementType()
        $form = $this->createForm('RC\PaiementCMCICBundle\Form\Type\PaiementType', $paiement,
            array(
                'method' => 'POST',
                'action' => $servicePaiement->getUrlPaiement(),
            )
        );

il ne retourne une erreur : "Could not load type "hidden"

xorgxx commented 7 years ago

j'ai résolu le probleme :

<?php
namespace RC\PaiementCMCICBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;

class PaiementType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('version',HiddenType::class )
            ->add('TPE', HiddenType::class)
            ->add('date', HiddenType::class)
            ->add('montant', HiddenType::class)
            ->add('reference', HiddenType::class)
            ->add('MAC', HiddenType::class)
            ->add('url_retour', HiddenType::class)
            ->add('url_retour_ok', HiddenType::class)
            ->add('url_retour_err', HiddenType::class)
            ->add('lgue', HiddenType::class)
            ->add('societe', HiddenType::class)
            ->add('mail', HiddenType::class)
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'RC\PaiementCMCICBundle\Entity\Paiement',
        ));
    }

    public function getName()
    {
        return '';
    }
}
matthv commented 7 years ago

Les erreurs remontées sur le Form sont normales, le bundle est compatible symfony2.

xorgxx commented 7 years ago

opps il y a une M.A.J. prévu en SF3 ? Mais j'ai d'autres problèmes <input id="paiement_version" name="paiement[version]" value="3.0" type="hidden">

matthv commented 7 years ago

cc @nicovak

xorgxx commented 7 years ago

Donc, j'ai sur la base de ton code refaire pour SF3. Merci