我正在尝试使用 php mvc,但遇到了以下问题。我的请求和路由器类非常简单,我想扩展主题以处理来自子文件夹的控制器调用,并且控制器类函数应该能够获取 url 变量发送它抛出 get 和 post。
我的路由器如下所示
class Router{
public static function route(Request $request){
$controller = $request->getController().'Controller';
$method = $request->getMethod();
$args = $request->getArgs();
$controllerFile = __SITE_PATH.'/controllers/'.$controller.'.php';
if(is_readable($controllerFile)){
require_once $controllerFile;
$controller = new $controller;
if(!empty($args)){
call_user_func_array(array($controller,$method),$args);
}else{
call_user_func(array($controller,$method));
}
return;
}
throw new Exception('404 - '.$request->getController().'--Controller not found');
}
}
和请求类
private $_controller;
private $_method;
private $_args;
public function __construct(){
$parts = explode('/',$_SERVER['REQUEST_URI']);
$this->_controller = ($c = array_shift($parts))? $c: 'index';
$this->_method = ($c = array_shift($parts))? $c: 'index';
$this->_args = (isset($parts[0])) ? $parts : array();
}
public function getController(){
return $this->_controller;
}
public function getMethod(){
return $this->_method;
}
public function getArgs(){
return $this->_args;
}
}
问题是:当我尝试将抛出的 ajax 发送到控制器方法时,由于其 url 结构而无法识别该变量。例如
index/ajax?mod_title=shop+marks&domain=example
只要看起来就被接受
index/ajax/shop+mark/example