Hello,
In my case, I need to be able to send an Inertia or JSON response via a controller which will be fetched by the component.
I have a sheet without a url which opens on top of a page and I want to be able to do a Get on my web route to retrieve the data.
I tried this:
<?php
namespace App\Http\Controllers;
use App\Data\OperatorMarkerData;
use App\Models\Marker;
use Inertia\Inertia;
class MarkerController extends Controller
{
public function show(Marker $marker)
{
return response()->json([
'marker' => Inertia::lazy(OperatorMarkerData::from($marker)),
]);
}
}
I receive this
All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.
In my sheet I use router from Inerta like this :
import { useEffect, useState } from 'react';
import ReportMarkerSheet from './ReportMarkerSheet';
import ValidationMarkerSheet from './ValidationMarkerSheet';
import { MarkerData } from '@/types/generated';
import { router } from '@inertiajs/react';
type MarkerSheetProps = {
markerId: number | null;
operationId: number;
isOpen: boolean;
onOpenChange: () => void;
tab: string;
};
export default function MarkerSheet({ markerId, operationId, isOpen, onOpenChange, tab }: MarkerSheetProps) {
const [marker, setMarker] = useState<MarkerData>();
const fetchMarker = async () => {
if (markerId) {
try {
const test = router.get(route('markers.show', markerId));
console.log(test);
} catch (error) {
console.log(error);
}
}
};
useEffect(() => {
fetchMarker();
}, [markerId]);
return (
<>
{tab === 'validation' ? (
<ValidationMarkerSheet
markerId={markerId}
operationId={operationId}
open={isOpen}
onOpenChange={onOpenChange}
/>
) : (
<ReportMarkerSheet markerId={markerId} operationId={operationId} open={isOpen} onOpenChange={onOpenChange} />
)}
</>
);
}
I d'like use inertia to avoid having to create API or other solution if it's possible. I don't want use shared data from Handle Inertia too.
Thank you in advanced