Mit routing system til mit mvc har jeg lidt problemer med, fordi jeg skal have mine parameter med over rigtigt ?
Mit routing system til mit mvc har jeg lidt problemer med, fordi jeg skal have mine parameter med over rigtigt..I kan se min kode her:
<?php
$router = new Router();
$router->routes(array(
array('url' => '/^(home)?$/', 'route' => 'user#index'),
array('url' => '/^home\/$/', 'route' => 'user#index'),
array('url' => '/^home\/(?P<id>\d+)\/add\/(?P<id2>\d+)\/$/', 'route' => 'user#add')
));
?>
<?php
class Router extends Error {
public $match = false;
function __construct() { $this->error = new Error(); }
function routes($routes) {
foreach($routes as $urls => $route) {
if(preg_match($route['url'], (isset($_GET['url']) ? $_GET['url'] : null), $matches)) {
$this->_setRoutes($route['route'], $matches);
$this->match = true;
break;
}
}
echo (!$this->match ? $this->error->set(1, 'Kunne ikke finde ruten.') : null);
}
private function _setRoutes($route, $matches) {
$rexplode = explode('#', $route);
$filepath = controllers.ds.$rexplode[0].'_controller'.ext;
if(!file_exists($filepath)) {
echo $this->error->set(1, 'Du mangler desværre: <b>'.$rexplode[0].'_controller.php</b> under '.controllers.'.');
} else {
require $filepath;
$instance = new $rexplode[0]();
if(!method_exists($instance, $rexplode[1])) {
echo $this->error->set(1, 'Du mangler desværre: <b>'.$rexplode[1].'</b> under '.$filepath.'.');
} else {
//$instance->{$rexplode[1]}();
call_user_func_array(array($rexplode[0], $rexplode[1]), $matches);
}
}
}
}
?>
Jeg får også sendt mine parameter såsom: id eller id2 med over, men det er ikke på den rigtige måde jeg gør det..
Hvis i lige gad og kigge lidt på det, og hjælpe mig lidt..
så kunne det være lækkert.
hvis jeg print_r($matches); så er det jo hele url'en jeg kigger i fra regular expressions, og det skulle vel engelig kun være id og id2 den skulle kigge i... hvis i forstår mig korrekt..
og jeg vil gerne have så man kan skrive $params['id'] i stedet for at man kun kan bruge det i den action fx: add eller index, som man sætter i call_user_func_array.
Tak...
