Laravel: как отправить текстовый ввод в качестве параметра маршрута? - PullRequest
0 голосов
/ 13 декабря 2018

просмотр

<form method="GET" action="{{ route('searchproduct',['page'=>1]) }}" >
    <input id="q" name="q" type="text" />
    <button type="submit" id="submitButton" class="btn btn-primary">Go</button>
</form>

Маршрут

Route::get('product/search/{page}/{q?}','ProductController@search')->name('searchproduct');

Контроллер

public function search(Request $request)
    {
        //processing

        return view('products',['products'=> $search_results]);
    }

после отправки формы URL выглядит следующим образом:

example.com / appname / public / product / search / 1? q = search + this

Iхотите, чтобы он всегда выглядел так:

example.com / appname / public / product / search / 1 / search + this

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Попробуйте это

<form id="search" method="POST" action="{{ route('searchproduct',['page'=>1]) }}" >
<input id="q" name="q" type="text" />
<button type="submit" id="submitButton" class="btn btn-primary">Go</button>
</form>

public function search(Request $request,$page,$q='')
{
    //processing

    return view('products',['products'=> $search_results]);
}

Route::post('product/search/{page}/{q?}','ProductController@search')->name('searchproduct');

Я думаю, из-за GET вы получаете example.com/appname/public/product/search/1?q=search+this URL.

0 голосов
/ 14 декабря 2018

В вашей форме добавьте ID.

Просмотр

<form id="search" method="GET" action="{{ route('searchproduct',['page'=>1]) }}" >
    <input id="q" name="q" type="text" />
    <button type="submit" id="submitButton" class="btn btn-primary">Go</button>
</form>

JS

jQuery(document).ready(function(){    
    jQuery("form#search").on('submit',function(e){
          e.preventDefault();
          var q = jQuery("#q").val();
          window.location.href = jQuery(this).prop('action')+"/" + encodeURIComponent(q)        
     });
});
...