Bonjour,

Voila je rencontre un petit problème avec mon code.

 public function index($id = null) {
        $this->loadModel('Servers');
        $this->loadComponent('Minecraft');
        $this->loadModel('Nodes');
        if (empty($id)) {
            throw new NotFoundException(__('Serveur not found1'));
        } else {
            $servers = $this->Servers->find()->where(['id' => $id])->first();
            if (empty($servers)) {
                throw new NotFoundException(__('Serveur not found'));
            } else {

                $propertie = json_decode($servers['properties']);

               $propertie = (array)$propertie;
               $this->set('propertie', $propertie);

            }
        }
    }

Ce code permet de récupèrer un tableau au foarmat JSON puis est décoder et envoyer dans un formulaire

Voici le code du formulaire,

<div class="content-wrap">
    <div class="row">
        <div class="col-sm-12">
            <div class="nest" id="labelClose">
                <div class="title-alt">
                    <h6><i class="fa fa-cog"></i> Propriétés serveur</h6>
                </div>
                <div class="body-nest" id="label">
                    <div class="row">
                        <?= $this->Form->create($propertie); ?>
                        <div class="col-sm-3">

                            <div class="body-nest" id="basic">

                                        <div class="form-group">
                                            <label for="motd">Mots du serveur</label><span class="help"> Texte affiché sur la liste des serveurs</span>
                                           <?= $this->Form->input('motd',['class'=>'form-control', 'label' => ' ']) ?>
                                        </div>
                                        <div class="form-group">
                                            <label for="max-players">Nombres de slots</label><span class="help"> Nombre de joueurs max sur le serveur</span>
                                            <?= $this->Form->input('max-players',['class'=>'form-control', 'label' => ' ']) ?>
                                        </div>

                            </div>

                        </div>

                         <?= $this->Form->end(); ?>

                    </div>

                    </div>

                </div>
            </div>
        </div>
    </div>

Et voilà l'erreur, que je ne comprend pas ...:/

Unable to find table class for current entity

1 réponse


Salut,

A mon avis ça veut dire que $propertie (le tableau que tu passes au formulaire) n'est pas du bon type.

Un simple tableau ne peut pas être passé en paramètre de la méthode create() à ce que je lis dans la doc : http://book.cakephp.org/3.0/fr/views/helpers/form.html.

Le paramètre doit être l'une des 3 choses suivantes :

  • Une instance Entity ou un iterateur qui mappe vers EntityContext, ce contexte permet au FormHelper de fonctionner avec les résultats à partir de ceux intégrés dans l’ORM.
  • Un tableau contenant la clé schema, qui mappe vers ArrayContext ce qui vous permet de créer des structures simples de données pour construire des formulaires.around
  • null et false mappe vers NullContext, cette classe de contexte satisfait simplement l’interface requise par FormHelper. Ce contexte est utile si vous voulez construire un formulaire court qui ne nécessite pas la persistance de l’ORM.