Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

poprawne użycie funkcji w $table->quickSearch


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

Rekomendowane odpowiedzi

Witam,

 

Próbuję ogarnąć quickSearch dla tabeli, która ma formatowaną wartość z ID na login, dla zarysu o co chodzi:

 

$table->parsers = [
  'accountid' => function($k, $v)
  {
  return $this->core->getPlayerNameFormatted($k); //zwraca login podając id
}];

$table->quickSearch = function( $string ) {
  $player = $this->core->getPlayerByName($string); //pobiera objekt gracza
  return $player->login; //zwraca login
};

 

jednakże quickSearch nie działa po wpisaniu jakiejkolwiek wartości, bardzo możliwe że nie rozumiem tego jak quickSearch powinien działać, any help? 😕

Nothing is impossible.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Codepixel zmienił(a) tytuł na poprawne użycie funkcji w $table->quickSearch
  • Manager

No to przecież odpowiadali Ci, że na frontendzie to nie zadziała tak łatwo - https://invisioncommunity.com/forums/topic/475215-how-to-use-table-quicksearch-with-data-from-json-file/?do=findComment&comment=2951901

Czy zrobiłeś i tylko masz problem z tym zwracaniem?

 

$table->quickSearch = function( $string ) {
  $player = $this->core->getPlayerByName($string); //pobiera objekt gracza
  return $player->login; //zwraca login
};

Gdzie widziałeś użycie tego jako funkcję? Źródło:

	/**
	 * @brief	Field to enable quick search on
	 */
	public $quickSearch = NULL;

 

To jest pole, a nie funkcja.

 

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

8 minut temu, DawPi napisał(a):

Gdzie widziałeś użycie tego jako funkcję? Źródło

 

applications -> core -> modules -> admin -> members -> members.php (linie 232 -> 234)

 

8 minut temu, DawPi napisał(a):

Czy zrobiłeś i tylko masz problem z tym zwracaniem?

quickSearch już dawno udało mi się rozpracować na frontend ale tylko dla kolumn, które nie są formatowane (tj. zawierają login domyślnie a nie ID), w tym drugim przypadku niestety zwraca "nothing to show"

 

Przed chwilą też napisałem post w podanym przez ciebie temacie o tym jak odpaliłem quickSearch na frontend.

Edytowane przez Codepixel

Nothing is impossible.

Odnośnik do komentarza
Udostępnij na innych stronach

5 godzin temu, DawPi napisał(a):
$table->quickSearch = function( $string ) {
  return "cokolwiek!";
};

Wtedy zwraca "cokolwiek!"?

Nie, zwraca całą listę jakbym nic nie wyszukiwał, chciałem zamieścić filmik by to zademonstrować ale niestety nie chce się załadować, jeśli potrzeba wrzucę na yt albo po prostu napisz na PW i prześlę ci link do live demo.

Edytowane przez Codepixel

Nothing is impossible.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
  • Rozwiązanie

Bo to:

		/* Search */
		$table->quickSearch = function( $string ) {
			return \IPS\Db::i()->like( 'name', $string, TRUE, TRUE, \IPS\core\extensions\core\LiveSearch\Members::canPerformInlineSearch() );
		};

Zwraca like, więc nawet widać w błędzie:


		$table->quickSearch =  function( $string ) {
  return 'ee';
};

Błąd:

image.png

 

Zatem Tobie potrzeba coś takiego:

 

		$table = new \IPS\Helpers\Table\Db( 'marketplacekeys_data', $this->url );
		$table->joins = array(
			array( 'select' => 'dl.*', 'from' => array( 'downloads_files', 'dl' ), 'where' => "dl.file_id=marketplacekeys_data.file_id" )
		);

 

I niżej:

		$table->quickSearch = function( $string ) {
            	return \IPS\Db::i()->like( 'dl.file_name', $string, TRUE, TRUE, TRUE );
};

image.png

 

Oczywiście trzeba dopasować do Twoich tabel i kodu!

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
14 godzin temu, Codepixel napisał(a):
$table->quickSearch = function( $string ) {
  $player = $this->core->getPlayerByName($string); //pobiera objekt gracza
  return $player->login; //zwraca login
};

Bo to ma nie zwracać już szukanej wartości, a dodać nowy warunek do WHERE. To zapewne inna tabela, więc konieczne są joiny i odpowiednie warunki.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o założenie nowego tematu.

Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.