0

Je commence octobre et j'essaye aussi de créer un plugin, donc peut-être des questions noob mais ne peux pas trouver un exemple de travail dans un certain temps de recherche sur le net et la documentation est bonne que chaque unité, mais manque "reliant les points" IMHO ... J'ai compris comment montrer le nom associé associé à l'identification en utilisant un SimpleTree (peut-être pas la bonne façon).OctobreCMS - Dropdown: enregistrer l'identifiant par nom choisi sur la liste déroulante

https://www.screencast.com/t/WDYkfPdMQhttps://www.screencast.com/t/4NDc3HHDs

frmArea.yaml

fields: 
id: 
    label: Número 
    oc.commentPosition: '' 
    span: auto 
    disabled: 1 
    type: number 
area_id: 
    label: 'Parente de' 
    oc.commentPosition: '' 
    emptyOption: 'Sem valor' 
    span: auto 
    type: dropdown 
    nameFrom: area 
area: 
    label: Área 
    span: full 
    oc.commentPosition: '' 
    type: text 

Area.php

<?php namespace JML\Gkb\Models; 

use Model; 

    /** 
* Model 
*/ 
class Area extends Model 


{ 
use \October\Rain\Database\Traits\Validation; 
use \October\Rain\Database\Traits\SimpleTree; 

/* 
* Disable timestamps by default. 
* Remove this line if timestamps are defined in the database table. 
*/ 
public $timestamps = false; 


/* 
* Validation 
*/ 
public $rules = [ 
]; 

/** 
* @var string The database table used by the model. 
*/ 
public $table = 'jml_gkb_areas'; 

//Relações 

public $hasMany = [ 
    'area_id' => 'JML\Gkb\Models\Area' 
]; 

/* 
public $belongsTo = [ 
    'area_id' => 'JML\Gkb\Models\Area' 
]; */ 

public function getAreaIdOptions(){ 
    return Area::all()->listsNested('area', 'id'); 
} 


} 

Si je crée des enregistrements sans choisir aucune relation avec un parent, ils sont créés (ceux du image par exemple). Si j'essaye de créer en sélectionnant un parent, cela économise pour toujours ... Si j'essaie de mettre à jour une enregistrement sans que le parent sélectionne un parent, la même chose se produit lors de la sauvegarde.

Pendant un certain temps ou au moins au moment où je vide le cache je ne peux pas créer un enregistrement sans parent renvoyant un délai de verrouillage après un certain temps ... Eh bien, j'attends plus de temps après 300 secondes ... L'identifiant incrémenté incrémenté ce qui signifie que quelque chose est en train de db ... je soupçonne que la requête envoie une chaîne où un numéro est nécessaire, mais ne sais pas comment y parvenir ...

Quelqu'un peut donner de l'aide avec où trouver des exemples connexes ou des snipets ou comment ??? Et est-il possible d'obtenir le même résultat pour le widget liste?

TIA

JL

Répondre

0

Eh bien, résolu ... Juste un creuser le code de trait SimpleTree pour comprendre comment cela fonctionne ... Incroyable simple, ...

<?php namespace JML\Gkb\Models; 

utilisation Modèle;

/** 
* Model 
*/ 
class Area extends Model 
{ 
use \October\Rain\Database\Traits\Validation; 
use \October\Rain\Database\Traits\SimpleTree; 

/* 
* Disable timestamps by default. 
* Remove this line if timestamps are defined in the database table. 
*/ 
public $timestamps = false; 
const PARENT_ID = 'area_id'; 


/* 
* Validation 
*/ 
public $rules = [ 
]; 

/** 
* @var string The database table used by the model. 
*/ 
public $table = 'jml_gkb_areas'; 

//Relações 

public function getAreaIdOptions(){ 

    return Area::all()->listsNested('area', 'id'); 

} 


} 

juste besoin de supprimer les relations et ajouter

const PARENT_ID = 'area_id'; 

comme c'est la colonne qui a la relation avec id.

Si quelqu'un connaît la réponse, comment changer le 'area_id' par sa description sur le widget de la liste Builder s'il vous plaît n'hésitez pas à commenter.

TIA