альтоутер маршруты не работают

я пытаюсь использовать altorouter для установки карты маршрутизации моего проекта php, на данный момент файл rout.php это

<?php
$router = new AltoRouter();
$router->setBasePath('/home/b2bmomo/www/');
/* Setup the URL routing. This is production ready. */
// Main routes that non-customers see
$router->map('GET','/', '', 'home');
$router->map( 'GET', '/upload.php', 'uploadexcel');

$match = $router->match();

// call closure or throw 404 status
if( $match && is_callable( $match['target'] ) ) {
call_user_func_array( $match['target'], $match['params'] );
} else {
// no route was matched
header( $_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
}
?>

у меня есть 2 файла в главной директории моего проекта, index.php и upload.php, что не так?

0

Решение

Вы изменили свои файлы .htaccess, чтобы переписать согласно сайт altorouter?

ваши маршруты выглядят неправильно. попробуй так:

// 1. protocol - 2. route uri  -3. static filename -4. route name
$router->map('GET','/uploadexcel', 'upload.php', 'upload-route');

похоже, что вам нужна статическая страница (не контроллер), попробуйте это (учитывает и то, и другое):

if($match) {
$target = $match["target"];
if(strpos($target, "#") !== false) { //-> class#method as set in routes above, eg 'myClass#myMethod' as third parameter in mapped route
list($controller, $action) = explode("#", $target);
$controller = new $controller;
$controller->$action($match["params"]);
} else {
if(is_callable($match["target"])) {
call_user_func_array($match["target"], $match["params"]); //call a function
}else{
require $_SERVER['DOCUMENT_ROOT'].$match["target"]; //for static page
}
}
} else {
require "static/404.html";
die();
}

что в значительной степени отсюда: https://m.reddit.com/r/PHP/comments/3rzxic/basic_routing_in_php_with_altorouter/?ref=readnext_6

и избавиться от этой базовой линии пути.

удачи

0

Другие решения

Вы запускаете функцию класса # через «call_user_func_array»:

    if ($match) {

if (is_string($match['target']) && strpos($match['target'], '#') !== false) {
$match['target'] = explode('#', $match['target']);
}

if (is_callable($match['target'])) {
call_user_func_array($match['target'], $match['params']);
} else {
// no route was matched
header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
die('404 Not Found');
}
}
0

По вопросам рекламы [email protected]