Skip to content

Commit d562c07

Browse files
committed
fix: configure routing
1 parent e67e8e8 commit d562c07

2 files changed

Lines changed: 40 additions & 33 deletions

File tree

app/core/Router.php

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,26 @@ class Router
1515
private static function formatUrl($url)
1616
{
1717
self::$isRouteTriggered = true;
18+
// Ensure consistent URL formatting
19+
$url = '/' . trim($url, '/');
20+
if ($url !== '/') {
21+
$url .= '/';
22+
}
1823

19-
return rtrim($url, '/') . '/';
24+
return $url;
2025
}
2126

2227
public static function get($url, $controller, $method)
2328
{
24-
if ($url === '/') {
25-
$url = '';
26-
} else {
27-
$url = self::formatUrl($url);
28-
}
29+
$url = self::formatUrl($url);
2930
self::$routes['GET'][$url] = ['controller' => $controller, 'method' => $method];
30-
3131
return new static;
3232
}
3333

3434
public static function post($url, $controller, $method)
3535
{
3636
$url = self::formatUrl($url);
3737
self::$routes['POST'][$url] = ['controller' => $controller, 'method' => $method];
38-
3938
return new static;
4039
}
4140

@@ -110,6 +109,11 @@ public static function dispatch($url, $requestType)
110109
$request = new Request();
111110
$request->capture();
112111

112+
// Normalize URL format for matching with routes
113+
$url = '/' . trim($url, '/');
114+
if ($url !== '/') {
115+
$url .= '/';
116+
}
113117

114118
$url = self::matchRoute($url, $requestType);
115119

app/init.php

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
// filepath: c:\xampp\htdocs\warvilphp\app\init.php
23

34
require_once 'core/utils/Loader.php';
45

@@ -7,19 +8,37 @@
78
// Allow cross-origin requests from any origin
89
header('Access-Control-Allow-Origin: *');
910
// Allow only specified methods for cross-origin requests
10-
header('Access-Control-Allow-Methods: POST, OPTIONS');
11+
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
1112
// Allow the Content-Type header for cross-origin requests
1213
header('Access-Control-Allow-Headers: Content-Type');
1314

1415
spl_autoload_register(function ($class_name) {
15-
$core = ['App', 'Router', 'RouterApi', 'Controller', 'Model', 'Response', 'Request', 'Database', 'Config', 'Layout', 'Storage'];
16-
$coreUtils = ['Loader', 'Helpers', 'DateHelper'];
16+
$core = ['App', 'Router', 'RouterApi', 'Controller', 'Model', 'Response', 'Request', 'Database', 'Config', 'Layout', 'Storage', 'Env'];
17+
$coreUtils = ['Loader', 'Helpers', 'DateHelper', 'UrlHelper', 'Redirect', 'Session'];
1718
$traits = ['Product'];
1819

19-
$routes = ['web', 'api'];
20-
21-
foreach ($routes as $route) {
22-
Loader::load('app/routes/', $route);
20+
// Load route files - ensure they exist first
21+
$routeFiles = ['web', 'api'];
22+
foreach ($routeFiles as $route) {
23+
$routePath = 'app/routes/' . $route . '.php';
24+
if (file_exists($routePath)) {
25+
require_once $routePath;
26+
} else {
27+
if (!is_dir('app/routes')) {
28+
mkdir('app/routes', 0755, true);
29+
}
30+
31+
// Create a default route file
32+
if ($route === 'web') {
33+
$content = "<?php\n\nuse app\core\{Router};\n\nRouter::get('/', 'WelcomeController', 'index');\n";
34+
file_put_contents($routePath, $content);
35+
require_once $routePath;
36+
} else if ($route === 'api') {
37+
$content = "<?php\n\nuse app\core\{RouterApi};\n\n// API Routes\n";
38+
file_put_contents($routePath, $content);
39+
require_once $routePath;
40+
}
41+
}
2342
}
2443

2544
foreach ($traits as $trait) {
@@ -31,22 +50,6 @@
3150
}
3251

3352
foreach ($coreUtils as $class) {
34-
Loader::load('app/core/utils', $class);
35-
}
36-
37-
$model = 'app/models/' . getModelName($class_name) . '.php';
38-
$helper = 'app/core/utils/' . $class_name . '.php';
39-
$core = 'app/core/' . $class_name . '.php';
40-
41-
if (file_exists($model)) {
42-
require_once $model;
43-
}
44-
45-
if (file_exists($helper)) {
46-
Loader::load('app/core/utils/', $class_name);
47-
}
48-
49-
if (file_exists($core)) {
50-
Loader::load('app/core/', $class_name);
53+
Loader::load('app/core/utils/', $class);
5154
}
52-
});
55+
});

0 commit comments

Comments
 (0)