Я сделал функцию поиска, чтобы показать связанные проекты на основе выбранного тега, и я получаю результаты с неправильными значениями
Что я сделал до сих пор
- Создать функцию контроллера и вернуть результаты в виде json
- Создать маршрут в
app.js
- Создать новый компонент для отображения результатов
- сделал axios запрос на отправку данных на контроллер и перенаправление на новый компонент для получения результатов
код
controller
public function areas(Request $request){
$areas = Project::where('area', $request->area)->where('published', '=', 'y')->get();
return response()->json($areas, 200);
}
route in api.php
Route::get('areasearch', 'Api\SearchController@areas');
route in app.js
import AreasPage from './components/areassearch.vue'
{
path: '/areas',
name: 'areas',
props: true,
component: AreasPage,
},
search script + component link
// link
<a v-model.lazy="area" @click="areasearch">{{project.area}}</a>
//script
methods: {
//search in areas
areasearch() {
axios.get('/api/areasearch', {
params: {
area: this.area
}
})
.then(response => {
this.$router.push({
name: 'areas',
params: {
areas: response.data
}
})
})
.catch(error => {});
},
},
results component
<template>
<div>
<navbar></navbar>
<template v-if="areas.length > 0">
<div class="container-fluid counters">
<div class="row text-center">
<div v-for="area in areas" :key="area.id" :to="`/projects/${area.slug}`">
<li>{{area.title}}</li>
</div>
</div>
</div>
</template>
<template v-else>
<p>Sorry there is no area for you, try search new query.</p>
</template>
<footerss></footerss>
</div>
</template>
<script>
import navbar from './navbar.vue';
import footerss from './footer.vue';
export default {
props: ['areas'],
components: {
navbar,
footerss
},
}
</script>
Выпуск
- Моя ссылка не ведет себя как ссылка (похожа на текст, когда я наводю на нее мышь)
- Например, если я ищу область
Jakarta
, большинство результатов, которые я получаю, это проекты, столбец которых area
равен null
.
Есть идеи?