Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][inne][PHP]Laravel - sortowanie wyników
Generic
post 25.12.2018, 23:41:36
Post #1





Grupa: Zarejestrowani
Postów: 224
Pomógł: 0
Dołączył: 31.10.2012

Ostrzeżenie: (10%)
X----


Witam. Od pewnego czasu zacząłem uczyć się laravela. Załapałem mniej więcej podstawy, jednak mam problem z posortowaniem wyświetlanych wyników. Chciałbym dodać możliwość sortowania tak, jak wygląda to m.in. na portalach aukcyjnych gdzie użytkownik wybiera w jaki sposób chce uporządkować wyniki. Czy ktoś mógłby mi podpowiedzieć, a najlepiej podesłać jakiś tutorial gdzie opisane jest krok po kroku jak się do tego zabrać. Szukałem rozwiązań w dokumentacji i google jednak trafiam tam tylko na sortowanie gdzie z góry ustalone jest po jakiej kolumnie ma się to odbywać. Z góry dziękuję i pozdrawiam.
Go to the top of the page
+Quote Post
trueblue
post 26.12.2018, 09:44:37
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


https://www.google.com/search?q=laravel%20sort%20by%20column
https://itsolutionstuff.com/post/laravel-5-...tchexample.html


--------------------
Go to the top of the page
+Quote Post
Generic
post 5.01.2019, 16:25:06
Post #3





Grupa: Zarejestrowani
Postów: 224
Pomógł: 0
Dołączył: 31.10.2012

Ostrzeżenie: (10%)
X----


Działa tak jak tego oczekiwałem, ale czy jest możliwość, aby zamiast linków sortowac zawartość opcjami z selecta? Chcę aby cena rosnąco i malejąco stanowiła dwie różne opcje zamiast linku działającego na zasadzie togglera.

Witam, postanowiłem napisać to po swojemu i finalnie działa. Jednak chciałbym poznać opinie kolegów z większym doświadczeniem i czy tego typu rozwiązanie jest dobre. Poniżej wypunktowałem moje czynności.

1. Dodałem do folderu config plik zawierający tablicę w której zdefiniowałem tabele i sposób w jaki ma być sortowana.
2. W szablonie znalazł się standardowy formularz z menu wyboru w którym pętlą foreach zwróciłem parametry sortowania czyli kolumna i w jaki sposób sortować.
3. Dla przychodzącego requesta z formularza utworzyłem middleware, który zmienia wartość requesta na domyślną w przypadku próby przesłania wartości niewystępującej w pliku config (sytuacja, w której użytkownik ręcznie zmienia wartość select).
4. W kontrolerze sprawdzam czy istnieje request i sortuje na jego podstawie pobierane dane.

1. sort.php (config)
  1. <?php
  2.  
  3. return [
  4. 'created_at-desc',
  5. 'price-asc',
  6. 'price-desc'
  7. ];

2. sort-view.blade.php (view)
  1. <form method="get">
  2. <select name="sort">
  3. @foreach(config('sort') as $sort)
  4. <option value="{{ $sort }}" {{ $sort == Request::input('sort') ? 'selected="selected"' : '' }}>{{ $sort}}</option>
  5. @endforeach
  6. </select>
  7. </form>

3. sort.php (middleware)
  1. <?php
  2.  
  3. namespace App\Http\Middleware;
  4.  
  5. use Closure;
  6.  
  7. class Sort
  8. {
  9. /**
  10.   * Handle an incoming request.
  11.   *
  12.   * @param \Illuminate\Http\Request $request
  13.   * @param \Closure $next
  14.   * @return mixed
  15.   */
  16. public function handle($request, Closure $next)
  17. {
  18. $by = config('sort');
  19.  
  20. if($request->input('sort') != null && !in_array($request->input('sort'), $by)) {
  21. $request->replace(array('order' => $by[0]));
  22. }
  23.  
  24. return $next($request);
  25. }
  26. }

4. SortController.php (controller)
  1. <?php
  2.  
  3. namespace App\Http\Controllers;
  4.  
  5. use App\Data;
  6. use App\Sort;
  7. use Request;
  8.  
  9. class OrderController extends Controller
  10. {
  11. public function sort()
  12. {
  13. $sort = explode('-', Request::input('sort'));
  14.  
  15. if(Request::input('sort')) {
  16. $data = Data::all()->orderBy($sort[0], $sort[1])->get();
  17. } else {
  18. $data = Data::all()->get();
  19. }
  20.  
  21. return view('sort-view', compact('data'));
  22. }
  23. }


Ten post edytował Generic 5.01.2019, 16:31:14
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 00:30