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:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user