Я занимаюсь разработкой сайта в CakePhp3.6
У меня есть форма поиска в моем header.ctp.
<form id="frm-search" method="post" action="search">
<input type="hidden" name="_csrfToken" value="<?=$this->request->getParam('_csrfToken')?>" />
<input type="text" id="search-inp" name="search-inp" placeholder="Search by product name" />
<input type="submit" class="btn" />
</form>
При размещении формы я отправляю по следующему маршруту в моем маршруте .php:
$routes->connect('/search', ['controller' => 'Products', 'action' => 'searchProducts', 'search']);
Мой код контроллера выглядит следующим образом:
public function searchProducts(){
$products = null;
/*1. Get the search string as post param*/
$searchStr = (isset($_POST['search-inp']) ?$_POST['search-inp'] :"");
if (empty($searchStr))
echo json_encode($products);
/*2. remove the prepositions from the searchstr*/
$remStrArr = array('in', 'at', 'or', 'and', 'of', 'for');
foreach ($remStrArr as $str){
$searchStr = str_replace($str, "", $searchStr);
}
$searchStr = preg_replace('/\s+/', '/', $searchStr);
/*3. break the searchstr to terms in a array*/
$searchTermsArr = explode("/",$searchStr);
if(empty($searchTermsArr))
return json_encode($products);
/*4. search each term*/
foreach ($searchTermsArr as $term){
if(empty($products) || is_null($products)){
$products = array($this->searchByProdName($term));
}else{
array_push($products, $this->searchByProdName($term));
}
}
$products = $products[0];
$this->set(compact('products'));
}
В моем файле шаблона search_products.ctp отображаются результаты поиска.
Мой файл поиска работает, но проблема в том, что когда я обновляю страницу результатов поиска, он запрашивает повторную отправку данных.
Почему запрашивается повторная отправка данных и как я могу это остановить?
Спасибо