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

Opublikowano

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.

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

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.

Opublikowano (edytowane)
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.

Opublikowano (edytowane)
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.

  • Manager
  • Rozwiązanie
Opublikowano

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.

  • Manager
Opublikowano
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.

Opublikowano
W dniu 10.09.2023 o 14:10, DawPi napisał(a):

Można się podzielić, chętnie rzucę okiem.

Po prostu podałem do tabeli dodatkową zmienną zawierającą nick i wyświetliłem to zamiast id

Nothing is impossible.

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ę.