В laravel 5.7 и vue.js функция поиска не работает на моем хосте - PullRequest
3 голосов
/ 04 ноября 2019

У меня есть проект для мультивендорного сайта с laravel 5.7 и vue.js. Я использовал следующий код для функции поиска.

Мой Web.php :

Route::post('product/search','Api\productController@search');

Мой Контроллер :

public function search(Request $request)
   {
            $searchTitle = $request->title;
            $searchCategory = $request->category;
            $searchUni = $request->uni;
            $searchCity = $request->city;
            if ($searchTitle || $searchCategory || $searchUni || $searchCity) {
                $ads = advertise::when($searchCategory, function ($query) use ($searchCategory) {
                    return $query->where('category_id', 'like', "%{$searchCategory}%");
                })
                    ->when($searchUni, function ($query) use ($searchUni) {
                        return $query->where('university', 'like', "%{$searchUni}%");
                    })
                    ->when($searchCity, function ($query) use ($searchCity) {
                        return $query->where('city', 'like', "%{$searchCity}%");
                    })
                    ->when($searchTitle, function ($query) use ($searchTitle) {
                        return $query->where('title', 'like', "%{$searchTitle}%");
                    })
                    ->where('status','=',1)->orderBy('created_at', 'desc')->paginate(18)
                    ->appends(request()->query());
            } else {
                $ads = advertise::where('status','=',1)->orderBy('created_at', 'desc')->paginate(18);

            }
            $i = 0;
            foreach($ads as $sd){
                $images = image::where('adver_id', $sd->id)->get();
    //            return response()->json($images);
                if(!$images->isEmpty()){
    //                return response()->json($images);
                    $ads[$i]->image1= $images[0]->image;
                }
                $i=$i+1;
            }
            return new productCollection($ads);
   }

Axios в моем vue-route.js :

    axios.post("/api/product/search/",this.searchbox).then(response => {

                        if( response.data.data.length === 0 ) {
                            this.showTeezers = "nothing"
                            this.$store.state.teezers=[]

                        } else {
                            this.$store.state.teezers=response.data.data
                        }
                    }).catch(error => {
                        console.log(error)
                    })

Когда я запускаю проект на моем локальном хосте, он работает хорошо, но когда я переместил его в host (Сервер Linux) это не работает. Эта ошибка появляется на хосте:

"Метод GET не поддерживается для этого маршрута. Поддерживаемые методы: POST.", Метод 405 не разрешен

Ответы [ 3 ]

3 голосов
/ 04 ноября 2019

попробуйте сопоставить обратный вызов с методом использования.

Route::post('product/search', ['uses' => 'Api\productController@search']);
2 голосов
/ 05 ноября 2019

Моя ошибка заключалась в использовании / после поиска в следующем коде: axios.post("/api/product/search/",this.searchbox).then(response => {..} Я удалил его, и это было правильно. Спасибо всем.

1 голос
/ 04 ноября 2019

Хорошо, я перечислю все, что могу придумать:

Вы пытались очистить кеш на вашем хосте? Введите замазку «php artisan route: cache», если это приведет к ошибке, если у вас есть ошибки в ваших маршрутах

Видите ли вы маршрут, который хотите использовать, в «php artisan route: list»? Если вы этого не сделаете, то проблема в том, что laravel почему-то не идет по вашему маршруту

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

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