Как очистить URL после поиска, используя GET с laravel? - PullRequest
0 голосов
/ 12 февраля 2020

Я использую метод GET для поиска некоторых записей в моей базе данных

<form id="cliente" class="form-horizontal" action="{{route('resultados_clientes')}}" method="get">
        <div class="form-group row">
          <label class="col-md-6 col-form-label" for="cliente"></label>
          <div class="col-md-12">
            <input form="cliente" maxlength="100" autocomplete="off" class="form-control" id="cliente" type="text" name="cliente" placeholder="Introduzca el rif o nombre del cliente a buscar" required>
            <br>
            <div class="pull-right">
            <button form="cliente" class="btn btn-sm btn-info" type="submit">
              Buscar</button>
          </div>
        </div>
      </form>

Проблема в том, что когда я что-то нашел и вернулся на свою страницу для поиска, он возвращает параметры поиска в URL ... Я хотел бы очистить это .. Как я могу сделать?

это функция моего контроллера

public function resultados_clientes(Request $request){
  $busqueda = $request->cliente;
  $clientes = strtoupper($busqueda);
  $perimetro = DB::table('tbl_perimetros as a')
    ->select('a.id','a.rif','a.cod_cliente','a.razon_social','a.holdings_id')
    ->leftjoin('tbl_holdings as b','b.id','=','a.holdings_id')
    ->select(array('a.id','b.hrif','b.hrazon_social','a.rif','a.razon_social','a.estatus'))
    ->where('a.rif','like', '%' . $clientes . '%')
    ->orWhere('a.razon_social', 'like', '%' . $clientes . '%')
    ->orWhere('b.hrif', 'like', '%' . $clientes . '%')
    ->orWhere('b.hrazon_social', 'like', '%' . $clientes . '%')  
    ->get();

  if($perimetro->count()) {
    return view('Busqueda_est.resultados_clientes',compact('perimetro','busqueda'));
  }

  $error_code = 1;
   return view('Busqueda_est.index', compact('error_code'));

}

Я хотел бы сделать вид функции или что-то подобное в .blade может быть с javascript или php

Вот мой .web

/*BUSQUEDA ESTANDAR*/
Route::namespace('Busquedaest')->group(function () {
Route::get('busqueda_est', 'BusquedaestController@index')->name('busqueda_est');
Route::get('busqueda_est-resultados-clientes', 'BusquedaestController@resultados_clientes')->name('resultados_clientes');
});

Ответы [ 3 ]

2 голосов
/ 12 февраля 2020

Вам нужно использовать POST вместо GET. чтобы сделать это, измените вашу html форму на:

<form id="cliente" class="form-horizontal" action="{{route('resultados_clientes')}}" method="post">
    @csrf
    <div class="form-group row">
      <label class="col-md-6 col-form-label" for="cliente"></label>
      <div class="col-md-12">
        <input form="cliente" maxlength="100" autocomplete="off" class="form-control" id="cliente" type="text" name="cliente" placeholder="Introduzca el rif o nombre del cliente a buscar" required>
        <br>
        <div class="pull-right">
        <button form="cliente" class="btn btn-sm btn-info" type="submit">
          Buscar</button>
      </div>
    </div>
  </form>

в вашей сети. php замените:

Route::get('busqueda_est-resultados-clientes', 'BusquedaestController@resultados_clientes')->name('resultados_clientes');

на:

Route::post('busqueda_est-resultados-clientes', 'BusquedaestController@resultados_clientes')->name('resultados_clientes');
2 голосов
/ 12 февраля 2020

Что вы можете сделать, это сделать ajax вызов на сервер, чтобы получить все записи. Использование метода POST будет работать, но это приведет к тому, что диалоговое окно будет появляться каждый раз, когда вы захотите перезагрузить страницу в некоторых браузерах.

В зависимости от того, используете ли вы какую-либо инфраструктуру JavaScript, есть различные способы достижения этого.

Мой предпочтительный фреймворк - VueJs, и в эту пятницу я собираюсь транслировать скринкаст о том, как создать поисковый компонент - вы можете присоединиться: https://youtu.be/FJ1MaNtjPDs

С VueJs (или даже прямым JavaScript) вы можете использовать вызов ax ios, который будет выглядеть примерно так:

axios.get('/your-end-point-here')
  .then(function (response) {
      // use response.data with the returned data for the list
  })
  .catch(function (error) {
      console.log(error);
  })
0 голосов
/ 12 февраля 2020

Если вы используете метод GET, у вас будут параметры в URL. Чтобы они не были видны, вместо этого следует использовать метод POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...