Der Inhalt dieses Artikels befasst sich mit der einfachen Implementierung der mehrstufigen Produktfilterfunktion von TP5 (Codebeispiel). Ich hoffe, dass er für Sie hilfreich ist .
Als ich vor ein paar Tagen an einem Projekt arbeitete, stieß ich auf die Notwendigkeit einer mehrstufigen Filterfunktion für die Produktklassifizierung. Ich habe das noch nie zuvor gemacht und nachdem ich viele Informationen überprüft hatte, habe ich es endlich geschafft. Obwohl die Umsetzung nicht elegant genug ist, kann sie zumindest effektiv sein und ich bin immer noch sehr zufrieden. Ein Neuling hat das Herz, ein Meister zu werden. Ich möchte hier Kinderschuhe mit Ihnen teilen, und Sie können mir gerne eine Anleitung geben.
Lassen Sie uns zunächst über das Prinzip sprechen: PHP implementiert die mehrstufige Filterung hauptsächlich durch die Verwendung eines Links, um Parameter abzurufen, und die in jedem Tag enthaltenen Parameter werden über einen Link an den Hintergrundcontroller übertragen weist den Wert wieder der Vorlage zu, fragt die entsprechenden Daten gemäß den Parametern ab und gibt sie an die Rezeption aus. Es ist nicht schwer, das zu implementieren. Ich habe am Anfang das Gefühl, dass ich überhaupt keine Ahnung habe...
Das Folgende ist ein Beispiel für den Front-End-Code:
<div> <span>类型:</span> <!-- 0~4代表ID值 --> <a> 0, 'mode' => $a, 'price'=>$c])}">全部</a> <a> 1, 'mode' => $a, 'price'=>$c])}">官方新闻</a> <a> 2, 'mode' => $a, 'price'=>$c])}">移动应用</a> <a> 3, 'mode' => $a, 'price'=>$c])}">微信公众号</a> <a> 4, 'mode' => $a, 'price'=>$c])}">Android开发</a> <span>模式: <a> $b, 'mode' => '0', 'price'=>$c])}">全部</a> <a> $b, 'mode' => '1', 'price'=>$c])}">模式1</a> <a> $b, 'mode' => '2', 'price'=>$c])}">模式2</a> <a> $b, 'mode' => '3', 'price'=>$c])}">模式3</a> <a> $b, 'mode' => '4', 'price'=>$c])}">模式4</a> <a> $b, 'mode' => '5', 'price'=>$c])}">模式5</a> <a> $b, 'mode' => '6', 'price'=>$c])}">模式6</a> <span>预算价格: <a> $b, 'mode' => $a, 'price'=>'0'])}">全部</a> <a> $b, 'mode' => $a, 'price'=>'1'])}">600以下</a> <a> $b, 'mode' => $a, 'price'=>'600'])}">600-1000</a> <a> $b, 'mode' => $a, 'price'=>'1000'])}">1000-5000</a> <a> $b, 'mode' => $a, 'price'=>'5000'])}">5000以上</a> </span></span> </div>
Jeder kann diesen Code definitiv verstehen, das werde ich Erklären Sie es etwas genauer, zum Beispiel: Wenn der Benutzer zum ersten Mal auf alles in der Kategorie klickt, wird das Kategoriefeld 0 in den Hintergrund verschoben. Der Hintergrund erhält die Beurteilung und weist den Wert zurück an die Rezeption . Wenn der Kategoriefeldwert 0 ist, werden alle Kategoriedaten abgefragt. Wenn der Benutzer zum zweiten Mal auf alles im Modus klickt, ist der Kategoriewert 0, da der Kategoriewert vom Hintergrund zugewiesen wird, und der Modus ist 0. Wenn Sie im Preis zum dritten Mal auf „Alle“ klicken, sind alle drei Labelwerte 0. Zu diesem Zeitpunkt bestimmt der Hintergrund die Bedingungen. Wenn alle 0 sind, werden alle abgefragt und die Vorlage wird durchlaufen und angezeigt. Ziehen Sie Schlussfolgerungen aus einem Beispiel, und das Gleiche gilt auch für andere Bezeichnungen. Im tatsächlichen Betrieb wird es definitiv nicht so dumm sein, die Werte einzeln in das Tag zu schreiben. Verwenden Sie einfach volist, um den Wert zu durchlaufen. Jeder versteht es.
Da es sich um einen mehrstufigen Filter handelt, muss es mehr als eine Where-Methodenbedingung geben, daher muss der Wert der Where-Methode gespleißt werden. Ich bin ein TPer. Ich verwende die TP5-Methode als Beispiel:
$b = input('category') ;//Empfangene Kategorie-ID
$a = input('mode'); //Empfangene Modus-ID
$c = input('price') ; //Preisspannenwert erhalten
$ where = ['category'=>$category,'mode'=>$mode,'price'=>$price];//Spleiß-Where-Bedingung
$data = model('table name')- >where($where)->select(); //Daten abfragen
return $this->fetch('',[
'data' =>$data,
'c '=>$c,
'b'=>$b,
'a'=>$a
]); //Vorlage Zuweisung
Natürlich muss die tatsächliche Situation darin bestehen, Bedingungen festzulegen, um die Daten von drei Werten zu beurteilen, und Bedingungen entsprechend den Werten festzulegen. Zum Beispiel:
if ($a == 0 && $b == 0 && $c == 0) {//条件全部为空,即显示所有 $where = ''; } elseif ($a == 0 && $b != 0 && $c != 0) {//模式为全部范围,分类和价格单独指定。 $where = ['b'=>$b,'c'=>$c]; }
Da mein Code relativ redundant ist, werde ich meine Scham nicht zeigen...
Der Endeffekt ist so:
Der Stil im Bild kann im Tag beurteilt werden. Wenn der von der Seite empfangene Parameterwert mit dem Wert im aktuellen Tag übereinstimmt, wird der Stil hervorgehoben für den Tag. So weit, das war's. Wenn Schüler bessere Ideen haben, können Sie mich gerne aufklären.
Das obige ist der detaillierte Inhalt vonTP5 implementiert einfach eine mehrstufige Produktfilterfunktion ähnlich wie Taobao (Codebeispiel).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!