Обновление страницы результатов поиска вызывает повторную отправку запроса в CakePhp3.6 - PullRequest
0 голосов
/ 16 сентября 2018

Я занимаюсь разработкой сайта в 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 отображаются результаты поиска.

Мой файл поиска работает, но проблема в том, что когда я обновляю страницу результатов поиска, он запрашивает повторную отправку данных.

Почему запрашивается повторная отправка данных и как я могу это остановить?

Спасибо

...