Contao-Camp 2024
Ergebnis 1 bis 6 von 6

Thema: options_callback mit Einschränkung

  1. #1
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.853
    Contao-Projekt unterstützen

    Support Contao

    Standard options_callback mit Einschränkung

    Hallo,

    ich habe mir für ein Webprojekt BE-Module in einem Bundle erstellt.
    Es sind drei Models
    tl_medical_category.php » hier werden die Medizinischen Bereiche gepflegt
    tl_medical_doctor.php » hier wird der Arzt angelegt und aus tl_medical_category wird der Medizinische Bereich mit als 'select' zur Auswahl angeboten
    tl_medical_oncall.php » hier wird ein Bereitschaftsdienst erstellt und aus tl_medical_doctor in drei Rubriken kann jeweils der Arzt ausgewählt werden

    Nun möchte ich in der im tl_medical_oncall.php aber jeweils nur die Ärzte je bestimmter Bereiche zur Auswahl haben.
    PHP-Code:
            'oncall_doctor'   => array(
                
    'inputType' => 'select',
                
    'exclude'   => true,
                
    'options_callback' => function () {
                    
    $options = array();
                    
    $data = \Database::getInstance()->execute("SELECT id,doc_name,doc_category FROM tl_medical_doctor");
                    while (
    $data->next())
                    {
                        
                        
    $options[$data->id] = $data->doc_name;
                        
                    }
                    return 
    $options;
                },
                
    'eval'      => array('mandatory' => true'maxlength' => 255'tl_class' => 'w33 clr''includeBlankOption' => true),
                
    'sql'       => ['type' => 'string''length' => 255'fixed' => true'default' => '']
            ),
            
    'oncall_dentist'   => array(
                
    'inputType' => 'select',
                
    'exclude'   => true,
                
    'options_callback' => function () {
                    
    $options = array();
                    
    $data = \Database::getInstance()->execute("SELECT id,doc_name FROM tl_medical_doctor");
                    while (
    $data->next())
                    {
                        
                        
    $options[$data->id] = $data->doc_name;
                        
                    }
                    return 
    $options;
                },
                
    'eval'      => array('mandatory' => true'maxlength' => 255'tl_class' => 'w33''includeBlankOption' => true),
                
    'sql'       => ['type' => 'string''length' => 255'fixed' => true'default' => '']
            ),
            
    'oncall_vet'   => array(
                
    'inputType' => 'select',
                
    'exclude'   => true,
                
    'options_callback' => function () {
                    
    $options = array();
                    
    $data = \Database::getInstance()->execute("SELECT id,doc_name FROM tl_medical_doctor");
                    while (
    $data->next())
                    {
                        
                        
    $options[$data->id] = $data->doc_name;
                        
                    }
                    return 
    $options;
                },
                
    'eval'      => array('mandatory' => true'maxlength' => 255'tl_class' => 'w33''includeBlankOption' => true),
                
    'sql'       => ['type' => 'string''length' => 255'fixed' => true'default' => '']
            ), 
    » in oncall_doctor sollen als Option nur die Ärzte mit dem medizinischen Bereich 'Praktischer Arzt haben
    » in oncall_dentist sollen als Option nur die Ärzte mit dem medizinischen Bereich 'Zahnarzt' haben
    » in oncall_vet sollen als Option nur die Ärzte mit dem medizinischen Bereich 'Tierarzt' haben

    Zur Zeit stehen jeweils immer alle zur Auswahl.

    wochenenddienst.png

    Ich möchte jedoch unter 'Praktischer Arzt', 'Zahnarzt' und 'Tierarzt' jeweils nur jene Ärzte zur Auswahl erhalten, denen dieser medizinische Bereich in tl_medical_doctor zugeordnet wurde.

    Ist es möglich in den 'options_callback' auf jeweils nur einen vorgegebenen Wert einer Tabelle zuzugreifen?
    Kann mir hier jemand weiterhelfen? Oder kennt jemand eine Erweiterung, die Ähnliches macht und ich dort abgucken kann?

    vielen Dank schon mal
    Grüsse
    Bernhard


  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.061
    Partner-ID
    10107

    Standard

    Naja du musst ja einfach nur deinen SQL Query entsprechend anpassen, sodass je Callback nur die entsprechenden Kategorien aus der Datenbank geholt werden. Oder verstehe ich das falsch?
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.853
    Contao-Projekt unterstützen

    Support Contao

    Standard

    ja, ich denke, dass du's korrekt verstanden hast.
    Nur wie ich die Abfrage anpasse weiss ich nicht
    Grüsse
    Bernhard


  4. #4
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.853
    Contao-Projekt unterstützen

    Support Contao

    Standard

    ich denke ich hab's:

    PHP-Code:
            'oncall_dentist'   => array(
                
    'inputType' => 'select',
                
    'exclude'   => true,
                
    'options_callback' => function () {
                    
    $options = array();
                    
    $data = \Database::getInstance()->execute("SELECT id,doc_name,doc_category FROM tl_medical_doctor");
                    while (
    $data->next())
                    {
                        
                        
    $category[$data->id] = $data->doc_category;
                        if (
    $category[$data->id] == 22)
                        {
                            
    $options[$data->id] = $data->doc_name
                        } 
                        
                    }
                    return 
    $options;
                },
                
    'eval'      => array('mandatory' => true'maxlength' => 255'tl_class' => 'w33''includeBlankOption' => true),
                
    'sql'       => ['type' => 'string''length' => 255'fixed' => true'default' => '']
            ), 
    Grüsse
    Bernhard


  5. #5
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.942

    Standard

    Du könntest auch

    PHP-Code:
    SELECT id,doc_name FROM tl_medical_doctor WHERE doc_category=22 
    verwenden, um Dir das if ($category[$data->id] == 22) zu sparen.

    Edit: fix typo
    Geändert von fiedsch (20.11.2022 um 12:31 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  6. #6
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.853
    Contao-Projekt unterstützen

    Support Contao

    Standard

    vielen Dank dir!
    Das unterscheidet mich als Bastler wohl von den Profis!
    Grüsse
    Bernhard


Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •