Jakim spoosbem przekzać z formularza geta do zmiennej htacces

0

Mam taki problem mam taki formularz

<form method=get action={{url('wyszukaj2')}}>
  <div class="row">
  <div class="col-md-3 col-xs-3">
 <span class=normalna2>Nazwa produktu</span>
  </div>
  <div class="col-md-5 col-xs-5">
  <input class="form-control" type=text  name=produkt>
  </div>
  </div>
  
  <div class="row">
  <div class="col-md-3 col-xs-3">
 <span class=normalna2>Nazwa substancji</span>
  </div>
  <div class="col-md-5 col-xs-5">
  <input class="form-control"  type=text name=substancja>
  </div>
  </div>
  <div class="row">
  <div class="col-md-3 col-xs-3">
 <span class=normalna2>Nazwa grupy</span>
  </div>
  <div class="col-md-5 col-xs-5">
  <input class="form-control" type=text  name=grupa>
  </div>
  </div>
  
  <div class="row">
  <div class="col-md-3 col-xs-3">
 <span class=normalna2>Dawka od</span>
  </div>
  <div class="col-md-5 col-xs-5">
    <div class="row">
      <div class="col-md-4 col-xs-4">
	<input class="form-control" type=text name=dawka_od>
      </div>
      <div class="col-md-8 col-xs-8">
	<span class=normalna2>Dawka dobowa </span><input type="checkbox" name=dobowa>
      </div>
    </div>
  </div>
 </div>
 
  <div class="row">
  <div class="col-md-3 col-xs-3">
 <span class=normalna2>Dawka do</span>
  </div>
  <div class="col-md-5 col-xs-5">
    <div class="row">
      <div class="col-md-4 col-xs-4">
	<input class="form-control" type=text name=dawka_do>
      </div>
 
    </div>
  </div>
 </div>
 
 
  <div class="row">
  <div class="col-md-3 col-xs-3">
 <span class=normalna2>Wyszukja według nazwy</span>
  </div>
  <div class="col-md-5 col-xs-5">
    <select class="form-control" name=wedlug>
    <option value=1>Według nazwy</option>
    <option value=2>Według opisu</option>
    </select>
  </div>
 </div>
 
  <div class="row">
  <div class="col-md-3 col-xs-3">
 <span class=normalna2>Wyszukaj Wszystkie pozycje</span>
  </div>
  <div class="col-md-5 col-xs-5">
    <select class="form-control" name=wszyskie>
    <option value=1>Wyszukja wszystkie pozycje</option>
    <option value=2>Wyszukja tylko te, które mają jakiś tekst</option>
    </select>
  </div>
 </div>
 
 
  <div class="row">
  <div class="col-md-3 col-xs-3">
 <span class=normalna2>Data od</span>
  </div>
  <div class="col-md-3 col-xs-3">
    <input type=date class="form-control" name=data_od>
    
  </div>
 </div>
 
 
 
  <div class="row">
  <div class="col-md-3 col-xs-3">
 <span class=normalna2>Data do</span>
  </div>
  <div class="col-md-3 col-xs-3">
    <input type=date class="form-control" name=data_do>
    
  </div>
 </div>
 
 
  <div class="row">
  <div class="col-md-3 col-xs-3">
 <span class=normalna2>Godzina od</span>
  </div>
  <div class="col-md-2 col-xs-2">
    <input type=text class="form-control" name=godzina_od>
    
  </div>
 </div>
 
 
 
  <div class="row">
  <div class="col-md-3 col-xs-3">
 <span class=normalna2>Godzina do</span>
  </div>
  <div class="col-md-2 col-xs-2">
    <input type=text class="form-control" name=godzina_do>
    
  </div>
 </div>
 
  <div class="row">
  <div class="col-md-3 col-xs-3">

  </div>
  <div class="col-md-2 col-xs-2">
   <button  value=Szukaj class="btn btn-primary">Szukaj</button>
    
  </div>
 </div>
 
</form>

I teraz w pasku adresu zmienne są przechowywane w takie standardowej postaci ?zmienna=wartośc a ja bym chciał 3 zmiennej przeksztłcić w taką postać

Route::get("/wyszukaj2/{nazwa_grupy}/{nazwa_produktu}/{nazwa_substancji}/","Controller_strona@wyszukaj2");

I teraz nie wiem jak to w laravelu zrobić w dokumentacji tego nie było.

2

Wydaje mi się, ze jednak dokumentacja mówi o tym https://laravel.com/docs/5.6/urls - natomiast Twoim problemem będzie przekształcanie nazw grup/produktów/substrancji na formę bez spacji i najlepiej taką bez polskich znaków i bez możliwości duplikacji np
Oryginalna nazwa grupy "Produkty dla zwierząt" -> przekształcasz to potem na friendly url slug, np. "produkty-dla-zwierzat". Zobacz jak jest zrobione nawet na tym forum (tu są podkreślenia).

No i taka moja uwaga.... nie przekazujesz geta do htaccessa, tylko w htaccessie robisz reguly do obslugi friendly url'a - chociaz najczesciej jest to jedna prosta regula, a resztę obsługuje juz php (Twój laravel). Nie zważając nawet na to - czytaj dokładnie dokumentację, bo tam wszystko jest.

0

A byś mi mógł po ludzku wytłumaczyć jak to zrobić ?

1

W laravelu masz gotowa regułę od htaccesaa, więc go już nie tykasz. Przerabiasz manuala, którego wyżej podesłałem i następnie szukasz informacji Google "laravel slug" ew podobne frazy typu 'how to make slugs in url laravel". Kodu gotowego nie podam, bo nie pracuje z laravelem, ale Twój problem jest tak "generyczny", że każdy Framework realizuje te rzeczy podobnie

1

@pol90: Możesz zrobić na kontrolerze redirect do ścieżki z parametrami w formie którą oczekujesz.
Możesz też zrobić to za pomocą javascripta, że przy submicie zmienia url akcji biorąc parametry z formularza.
Możesz też pokombinować z middleware.
@up: jest metoda str_slug() która załatwia sprawę slug'a
https://laravel.com/docs/5.6/helpers#method-str-slug

1

Po co chcesz dane do .htaccesa przekazywać? Routing w obrębie aplikacji rób w aplikacji.
Dodatkowo tak rozwiązana nawigacja wymaga od użytkownika wiedzy na temat tego, żeby widział w jakiej grupie znajdują się jakie produkty i jakie te zawierają substancje. Np powiedzmy chciałbym wyszukać sobie kodeine i teraz muszę pamiętać w jakich produktach ona była... Nie mówiąc o literówkach.

Imo najlepiej jak byś te zmienne wyciągnął z formularza i wsadził w jakąś listę rozwijaną podpięta pod JSa (fajnie spiąć to dynamicznie, żeby po wybraniu grupy produktów, nie pokazywało produktu z innych grup i dalej to samo dla substancji), a później za pomącą tej listy wygenerował dynamiczny url dla pozostałych pól.

Jak nie chcesz JSa to możesz na siłę użyć wiązanki GETów i iść z ogółu do szczegółu dla tych 3 zmiennych.
Wykluczy to konieczność zapamiętania listy powiązań przez użytkownika dla grupy-produktu-substancji i da Ci to zamierzony url

0

Jeżeli masz jakieś dynamiczne listy parametrów przekazywane przez GET, to zamiast mieszać z routingiem po prostu korzystaj z parametrów GET w formie nazwa_parametru=wartość_parfametru, rozpoznawaj to w kontrolerze i na tej podstawie buduj wyszukiwanie/filtrowanie, czy cokolwiek potrzebujesz.

0

Z tego co mi wiadomo to laravel domyślnie ma linki user friendly w swoim .htaccessie, znajdz jakiś defaultowy projekt w laraverze na gicie i przekopiuj sobie zawartość pliku .htaccess do swojego pliku o tej nazwie (pamiętaj że jest ukryty).

1 użytkowników online, w tym zalogowanych: 0, gości: 1