web-dev-qa-db-fra.com

Passer des arguments pour un champ personnalisé

J'ai besoin d'un champ personnalisé qui doit sélectionner la base de données avec certaines conditions. Lorsque le client A connecté dans ce champ doit sélectionner des enregistrements appartenant au client A uniquement.

Le champ personnalisé est comme ci-dessous

JFormHelper::loadFieldClass('list');

class JFormFieldGroupList extends JFormFieldList{
  protected $type='grouplist'

  public function getOptions($id=''){
    $options = array();
    //connect to database and get the records
    //Form the value and text
    return $options
  }
}

Dans le XML

<field name="grouplist"
  multiple="true"
  type="grouplist"          
  label="Group"/>

Dans le default.php

echo $this->form->renderField('grouplist',null,$default_group);

La question est que je veux passer une valeur de default.php au champ personnalisé afin que je puisse poser une requête select conditionnelle tout en récupérant des données de la base de données.

3
Malaiselvan

Alors construisez-le dans la logique de terrain.

JFormHelper::loadFieldClass('list');

class JFormFieldGroupList extends JFormFieldList{
    protected $type='grouplist'

    public function getOptions($id=''){
        $options = array();
        $user = JFactory::getUser();
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        // set up your query
        $query->where('user_id = '.$user->id);
        //connect to database and get the records
        //Form the value and text
        return $options
    }
}
1
Michael

Utilisez l'événement jQuery onChange et exécutez une tâche de contrôleur qui vous fournira un résultat JSON avec les données dont vous avez besoin. Si ce n'est pas un composant, vous devrez en créer un. Sinon, vous pouvez essayer une application CLI. C'est le seul moyen sûr et fiable.

0
Artur Stępień