Skocz do zawartości

Witamy na polskim forum Contao
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!
Zdjęcie

Zewnętrzna tabela we własnym module


  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1
Jaro_27

Jaro_27

    Doświadczony

  • Zarejestrowani
  • PipPipPip
  • 60 postów

Witam,

Czy istnieje w Contao możliowść podpięcia tabeli z zewnętrznej bazy danych (nie tej, która obsługuje Contao) do własnego modułu.

Chciałbym we własnym module wyświetlać rekordy tabeli (taką listę jak przy aktualnościach) bazy danych znajdującej się na innym serwerze.

 

Pozdrawiam,

Jarek


  • 0

#2
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1 538 postów
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski

Tak, wystarczy że wywołasz metodę Database::getInstance() z własnym configiem:

 

https://github.com/c...tabase.php#L137

 

Przykładowo:

$database = \Database::getInstance([
    'dbHost' => 'zewnetrzny.host.com',
    'dbUser' => '...',
    // i co tam jeszcze potrzeba
]);

$records = $database->execute("SELECT * FROM zewnetrzna_tabela");

  • 0

Codefog - Contao web development


#3
Jaro_27

Jaro_27

    Doświadczony

  • Zarejestrowani
  • PipPipPip
  • 60 postów

Tak, wystarczy że wywołasz metodę Database::getInstance() z własnym configiem:
 
https://github.com/c...tabase.php#L137
 
Przykładowo:

$database = \Database::getInstance([
    'dbHost' => 'zewnetrzny.host.com',
    'dbUser' => '...',
    // i co tam jeszcze potrzeba
]);

$records = $database->execute("SELECT * FROM zewnetrzna_tabela");

  • 0

#4
Jaro_27

Jaro_27

    Doświadczony

  • Zarejestrowani
  • PipPipPip
  • 60 postów

Hmm. Nie dodałem, że chciałbym wyświetlić rekordy w backendzie. Podobnie jak wyświetlane są aktualności. We własnym module w pliku modules\wlasny_modul\config\config.php mam:

array_insert($GLOBALS['BE_MOD']['content'], 1, array
(
    'systems' => array
    (
        'tables' => array('tl_systems')
    )
));

To pozwala mi wyświetlić w trybie listy rekordy, ale z tabeli lokalnej bazy contao.

Jak zatem zrobić, żeby rekordy te były brane z zewnętrznej tabeli?


  • 0

#5
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1 538 postów
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski

Uuu, tu się zaczynają schody :) Być może jednym sposobem byłoby napisanie nowego drivera DCA, który by rozszerzał DC_Table:

 

https://github.com/c...rs/DC_Table.php

 

To w połączeniu z wyżej wymienionym przeze mnie kodem może całkiem nieźle zadziałać. Nie wiem tylko, jak pozostałe części Contao zareagują na nieistniejącą tabelę.

 

Inny (pewny) sposób to napisanie własnego modułu backend od podstaw i całkowita rezygnacja z DCA. Przykładem może być moduł Maintenance:

 

https://github.com/c.../config.php#L93

https://github.com/c...Maintenance.php


  • 0

Codefog - Contao web development





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych użytkowników