Skocz do zawartości
Pecetowicz Forum komputerowe

Jak wyświetlić tabelkę w zakładce? | Invision Community


Przejdź do rozwiązania Rozwiązane przez aXenDev,

Rekomendowane odpowiedzi

Cześć. W jaki sposób mogę wyświetlić tabelkę w dowolnym miejscu na stronie w skrypcie Invision Community? Próbowałem w taki sposób jak niżej, ale wchodząc do zakładki, w której wyświetlam tabelkę pojawia się błąd "Class name must be a valid object or a string (0)".

// Print players
$query = $database->select( 'id, username', \IPS\Settings::i()->test_dbTable_players, [ 'online=1' ]);
					
if ($query) {
	$rows = [];
	foreach($query as $result) {
		$rows[] = $result;
	}
}

$table = new \IPS\Helpers\Table\Custom($rows, \IPS\Http\Url::internal( 'app=test&module=test2&controller=view' ));
$table->include = [ 'id', 'username' ];
$table->langPrefix = 'test_players_headTable_';
$table->limit = 20;

$template = \IPS\Theme::i()->getTemplate( 'test2', 'test', 'front' )->main( 'TEST', $table );
\IPS\Output::i()->output = $template;
<ips:template parameters="$info, $players" />

{expression="$players" raw="true"}

Wchodząc do zakładki, wyświetla się:

Error: Class name must be a valid object or a string (0)
#0 /home/klient.dhosting.pl/qwer273/qwer273.dkonto.pl/public_html/system/Theme/Dev/Template.php(171): IPS\Theme\theme_core_front_tables_rows(Object(IPS\Helpers\Table\Custom), Array, Array)
#1 /home/klient.dhosting.pl/qwer273/qwer273.dkonto.pl/public_html/system/Theme/Theme.php(4495) : eval()'d code(513): IPS\Theme\Dev\_Template->__call('rows', Array)
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
12 godzin temu, RiV napisał:

W jaki sposób mogę wyświetlić tabelkę w dowolnym miejscu na stronie

Widget?

Zresztą odwołujesz się do jednej zmiennej:

$template = \IPS\Theme::i()->getTemplate( 'test2', 'test', 'front' )->main( 'TEST', $table );

A próbujesz wyświetlić dwie:

<ips:template parameters="$info, $players" />
  • Lubię to! 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zmieniłem w poście na 'TEST' bo to była zmienna, której kod nie został podany. Widget odpada, źle sprecyzowałem pytanie. Mam zrobioną już zakładkę i chcę wyświetlić w niej tabelkę, lecz gdy to robię wyświetla się błąd.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert

Zmień to:

12 godzin temu, RiV napisał:

$template = \IPS\Theme::i()->getTemplate( 'test2', 'test', 'front' )->main( 'TEST', $table );

na:

$template = \IPS\Theme::i()->getTemplate( 'test2', 'test', 'front' )->main( 'TEST', (string) $table );

Masz nawet podane na tacy co masz zrobić:

12 godzin temu, RiV napisał:

Error: Class name must be a valid object or a string (0)

 

  • Lubię to! 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dalej ten sam problem.

Error: Class name must be a valid object or a string (0)

Kod:

$template = \IPS\Theme::i()->getTemplate( 'test2', 'test', 'front' )->main( $player, (string) $table );
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
Napisano (edytowane)

Pokaż kod tabelki, a dokładniej co przypisujesz w zmiennej table.

Edytowane przez aXenDev
  • Lubię to! 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach
2 minuty temu, aXenDev napisał:

Pokaż kod tabelki, a dokładniej co przypisujesz w zmiennej table.

Jest w pierwszym poście kod tabelki.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
  • Rozwiązanie
Napisano (edytowane)

Faktycznie, moje niedopatrzenie, sorry.

Brakuje Ci tutaj dwóch funkcji, aby tabelka zadziałała na froncie:

$table->tableTemplate
$table->rowsTemplate

 

Edytowane przez aXenDev
  • Dzięki! 2
Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)
13 minut temu, aXenDev napisał:

Faktycznie, moje niedopatrzenie, sorry.

Brakuje Ci tutaj dwóch funkcji, aby tabelka zadziałała na froncie:



$table->tableTemplate
$table->rowsTemplate

 

Dzięki! Problem rozwiązany. Mam jeszcze jedno pytanie.

$table->tableTemplate  = [ \IPS\Theme::i()->getTemplate( 'tables', 'core', 'admin' ), 'table'  ];
$table->rowsTemplate  = [ \IPS\Theme::i()->getTemplate( 'tables', 'core', 'admin' ), 'rows'  ];

Czy są jeszcze jakieś inne szablony tabelki, oprócz szablonu administracyjnego?

$table->tableTemplate  = [ \IPS\Theme::i()->getTemplate( 'tables', 'core', 'front' ), 'table'  ];
$table->rowsTemplate  = [ \IPS\Theme::i()->getTemplate( 'tables', 'core', 'front' ), 'rows'  ];

Spróbowałem dodać coś takiego aby tabelkę pobierało z front a nie z panelu administracyjnego, lecz wyświetla się ten sam błąd.

Edytowane przez RiV
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert

Stwórz najlepiej swoje szablony dla tabelki.

  • Lubię to! 2
  • Dzięki! 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto. Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...