Reproduce
Install cake
create client folder in the root npm create vite@latest
Need to install the following packages:
[email protected]
Ok to proceed? (y)
✔ Project name: … vite-project
✔ Select a framework: › Svelte
✔ Select a variant: › JavaScript
Scaffolding project in ...workspace/svelte-cake/client/vite-project...
Done. Now run:
cd vite-project
npm install
npm run dev
Configure the vite server proxy to point to the cake server https://vitejs.dev/config/server-options.html#server-proxy
vite.config.js
import { defineConfig } from 'vite'
import { svelte } from '@sveltejs/vite-plugin-svelte'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [svelte()],
server: {
proxy: {
'/api': 'http://localhost:8765'
}
}
})
https://book.cakephp.org/4/en/views/json-and-xml-views.html https://www.youtube.com/watch?v=GZPUlQEnAkA&t=5s
Add the view classes to the controllers that you want
public function viewClasses(): array
{
return [JsonView::class];
}
The action must output json
{
$roles = $this->paginate($this->Roles);
$this->set(compact('roles'));
$this->viewBuilder()->setOption('serialize', 'roles');
}
Add an api route to the routes.pjp Needs to include any controllers that we want to access
$routes->scope('/api', function (RouteBuilder $routes) {
$routes->setExtensions(['json']);
$routes->resources('Roles');
});
Can either use the extension or the accept header application/json