2.6 KiB
2.6 KiB
TODO: Fix URL-based Page Navigation (useNavigate URL Format Issue)
Problem Summary
Pages return "page not found" when accessed via URL. The issue is a mismatch between how useNavigate.js generates URLs and how VueRouteMap.php parses them back to component names.
Root Cause
- Frontend (
useNavigate.js): ConvertsCooperativeList→/cooperativelist(no separators) - Backend (
VueRouteMap.php): Expects hyphenated format like/cooperative-listto properly convert back toCooperativeList - Result: Component name mismatch → page not found
Fix Steps
Step 1: Fix Frontend URL Generation
File: resources/js/composables/Core/useNavigate.js
- Modify the URL generation logic to convert camelCase/PascalCase page names to kebab-case
- Change:
page.replace(/\./g, '/').toLowerCase() - To: Convert
CooperativeList→cooperative-list(hyphenated kebab-case) - Ensure all page navigations generate proper kebab-case URLs
Step 2: Verify Backend Route Parsing
File: app/Http/Controllers/Support/VueRouteMap.php
- Verify
toCamelCase()method properly converts kebab-case back to PascalCase - Confirm:
cooperative-list→CooperativeList - Test with multi-word component names
Step 3: Test URL Patterns
- Test direct URL access:
/cooperative-list→ loadsCooperativeListcomponent - Test direct URL access:
/buy-view-product-market→ loadsBuyViewProductMarketcomponent - Test URLs with hash parameters:
/edit-user--hHASHKEY - Test URLs with payload parameters:
/some-page--e:ENCODED_PAYLOAD
Step 4: Verify Browser Back/Forward Navigation
- Test popstate event handling with new URL format
- Ensure browser history works correctly with kebab-case URLs
Step 5: Check Existing Routes
- Verify all routes in
VueRouteMap::$routesarray work with new URL format - Ensure no broken links or navigation issues
Expected Outcome
- All pages accessible via direct URL
- Browser refresh maintains current page
- Browser back/forward navigation works correctly
- URLs are clean and SEO-friendly (kebab-case)
Files to Modify
resources/js/composables/Core/useNavigate.js- Fix URL generation- Potentially
resources/js/composables/useUrlEncoder.js- If hash/payload encoding needs adjustment
Testing Checklist
- Navigate to a page, copy URL, open in new tab → page loads correctly
- Refresh page while on a route → page stays on same route
- Browser back button works correctly
- URLs with hashkey parameters work
- URLs with payload parameters work