public function run()
{
// Получаем строку запроса
$uri = $this->getURI();
// Проверяем наличие такого запроса в массиве маршрутов (routes.php)
foreach ($this->routes as $uriPattern => $path) {
// Сравниваем $uriPattern и $uri
if ([b]preg_match("~$uriPattern~", $uri)[/b]) {
// Получаем внутренний путь из внешнего согласно правилу.
$internalRoute = preg_replace("~$uriPattern~", $path, $uri);
echo $uri; //Если ввести не правильный адрес в строке
//пример:www.eshopper.ru/12345 результат 12345
//это есть не существующий адрес!правильно?
//Здесь можно перенаправить результат на страницу 404?
//хостинг виртуальный и не поддерживает страницы ошибок.
// Определить контроллер, action, параметры
$segments = explode('/', $internalRoute);
$controllerName = array_shift($segments) . 'Controller';
$controllerName = ucfirst($controllerName);
$actionName = 'action' . ucfirst(array_shift($segments));
$parameters = $segments;
// Подключить файл класса-контроллера
$controllerFile = ROOT . '/controllers/' .
$controllerName . '.php';
if (file_exists($controllerFile)){
include_once($controllerFile);
}
// Создать объект, вызвать метод (т.е. action)
$controllerObject = new $controllerName;
/* Вызываем необходимый метод ($actionName) у определенного
* класса ($controllerObject) с заданными ($parameters) параметрами
*/
$result = call_user_func_array(array($controllerObject, $actionName), $parameters);
// Если метод контроллера успешно вызван, завершаем работу роутера
if ($result != null) {
break;
}
}
}
}
Теперь проблема. Если заменить:
на
~$uriPattern~
то ошибка
~^$uriPattern$~
Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'SiteController' does not have a method 'actionIndexcsite'пропадает но во время аякс запроса:
function recievePolis(id,status){возникает ошибка что класс не найден, и это только по аяксу.
$.ajax({
url: "/check/oscpv/saveTransfer",
type: "POST",
data: {
id:id,
status:status
},
beforeSend: function(){ $("#ajax_vis").show();},
success:function(data){
$('#transfer').html(data);
$("#ajax_vis").hide();
},
error:function(){
alert('Error!')
$("#ajax_vis").hide();
}
});
}