Implement JavaScript route generation and default route fallback system

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-10-22 01:34:31 +00:00
parent de4e0438f0
commit 7ebe35f207
3 changed files with 107 additions and 38 deletions

View File

@@ -156,6 +156,9 @@ class Rsx {
* The proxy ensures all required route parameters are provided and handles extra parameters
* as query string values.
*
* If the route is not found in the route definitions, a default pattern is used:
* `/_/{controller}/{action}` with all parameters appended as query strings.
*
* Usage examples:
* ```javascript
* // Simple route without parameters (defaults to 'index' action)
@@ -177,6 +180,10 @@ class Rsx {
* });
* // Returns: /clients/view/C001?tab=history
*
* // Route not found - uses default pattern
* const url = Rsx.Route('Unimplemented_Controller', 'some_action').url({foo: 'bar'});
* // Returns: /_/Unimplemented_Controller/some_action?foo=bar
*
* // Generate absolute URL
* const absolute = Rsx.Route('Frontend_Index_Controller').absolute_url();
* // Returns: https://example.com/dashboard
@@ -194,20 +201,17 @@ class Rsx {
* @param {string} class_name The controller class name (e.g., 'User_Controller')
* @param {string} [action_name='index'] The action/method name (defaults to 'index')
* @returns {Rsx_Route_Proxy} Route proxy instance for URL generation
* @throws {Error} If route not found
*/
static Route(class_name, action_name = 'index') {
// Check if route exists
if (!Rsx._routes[class_name]) {
throw new Error(`Class ${class_name} not found in routes`);
// Check if route exists in definitions
if (Rsx._routes[class_name] && Rsx._routes[class_name][action_name]) {
const pattern = Rsx._routes[class_name][action_name];
return new Rsx_Route_Proxy(class_name, action_name, pattern);
}
if (!Rsx._routes[class_name][action_name]) {
throw new Error(`Method ${action_name} not found in class ${class_name}`);
}
const pattern = Rsx._routes[class_name][action_name];
return new Rsx_Route_Proxy(class_name, action_name, pattern);
// Route not found - use default pattern /_/{controller}/{action}
const default_pattern = `/_/${class_name}/${action_name}`;
return new Rsx_Route_Proxy(class_name, action_name, default_pattern);
}
/**