Comments (5)
You will have to implement a search component on the frontend-side yourself and fetch data from a custom backend API route. Or use the usePage()
hook and embed the data on your page (not recommended, but possible).
Query parameters will probably not be needed in your reactive search component.
You may hit up Google with search terms like “build vue search component” etc. Hope you will find something useful!
from kirby-vue3-starterkit.
Thanks for your reply, the reactive part is not really a problem with a custom route, but i need the parameters in the url to make the searchpage shareable. Can't the route be changed to give the URL parameters to the controller? would you mind to maybe provide me a example? i'm new to both kirby and vue :)
from kirby-vue3-starterkit.
This setup may be a bit too complex if you're new to Kirby and Vue. I recommend learning a bit of both and then revisit this boilerplate. Since both are tightly integrated into another.
Sorry, but I can't give you support for such a specific request.
Edit: You'll have to use the useRouter()
hook. You can then parse the route and extract the query. You may take a look into the Vue Router docs.
from kirby-vue3-starterkit.
i solved it by using
$data = [
'q' => get('q'),
];
return page($page)->render($data);
insted of
$html = kirby()->render(page($page));
return $html;
inside the routes.php of the router plugin to pass the parameters to the controller.
now i get the parameters in the controller but the page is not delivered anymore :( i only receive the json.
when i get the parameters via the Vue Router as you told me they are only available in the Vue Component but not in the Controller. Is there a way to get the parameters directly inside the controller?
from kirby-vue3-starterkit.
Solved the problem by using this.route.query.q in my vue and doing the search via the api with Vue.
used this is the search vue
...
<input
type="text"
v-model.trim="search"
placeholder="search ..."
@keyup="getSearchResult"
/><br />
<ul>
<li v-for="result in results" :key="result.id">
{{ result.title }}
</li>
<ul>
...
data() {
return {
results: [],
search: this.route.query.q
};
},
methods: {
getSearchResult() {
if(this.search) {
fetch("/search/"+this.search.toLowerCase())
.then(response => response.json())
.then(res => {
if (this.search) {
this.results = res.results.filter(results =>
results.title.toLowerCase().includes(this.search.toLowerCase())
);
} else {
this.results = res.results;
}
});
}
}
},
i've added this to the routes.php
/**
* Return JSON-encoded search data
*/
[
'pattern' => 'search/(:any)',
'language' => '*',
'action' => function ($any,...$args) {
$query = $any;
if ($query) {
$results = site()->search($query, 'title|text');
}
foreach ($results as $result):
$results_array[] = array(
'url'=>$result->url(),
'title'=>$result->title()->value()
);
endforeach;
$data = [
'query' => html($query),
'results' => $results_array,
];
return \Kirby\Data\Json::encode($data);
}
],
maybe it's helpful for someone
from kirby-vue3-starterkit.
Related Issues (20)
- Working with layouts and blocks HOT 9
- Deployed vite scripts refers to localhost HOT 4
- (?) Best Practice: Using Tags for filtered Collections HOT 1
- Kirby caches path to assets? HOT 1
- router-view transition won't fade in on router.replace HOT 1
- PHP / Kirby Routing HOT 4
- Sitemap.xml HOT 1
- Build Issue: Page not found HOT 1
- Deployment: What and how? HOT 17
- Vue.js devtools HOT 2
- Replacing default image block snippet HOT 4
- Meta-tags kirby-extended HOT 1
- Storing and accessing development/production variables in env HOT 1
- Alias HOT 1
- Queries not working HOT 1
- .env files not loading HOT 6
- Draft preview not working HOT 3
- create pages from frontend HOT 1
- Outsource internal `kirby-vue-kit` into own repository HOT 1
- Custom language variables best practice HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kirby-vue3-starterkit.