2016-07-01 20 views
7

Tôi đang cố gắng sử dụng bộ định tuyến (AltoRouter) lần đầu tiên và không thể gọi bất kỳ trang nào.Định tuyến qua Php AltoRouter

cấu trúc thư mục Web

enter image description here Bộ luật

index.php

require 'lib/AltoRouter.php'; 

$router = new AltoRouter(); 
$router->setBasePath('/alto'); 
$router->map('GET|POST','/', 'home#index', 'home'); 
$router->map('GET|POST','/', 'display.php', 'display'); 
$router->map('GET','/plan/', 'plan.php', 'plan'); 
$router->map('GET','/users/', array('c' => 'UserController', 'a' => 'ListAction')); 
$router->map('GET','/users/[i:id]', 'users#show', 'users_show'); 
$router->map('POST','/users/[i:id]/[delete|update:action]', 'usersController#doAction', 'users_do'); 
// match current request 
$match = $router->match(); 

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'); 
} 

Tôi có một file có tên plan.php (kế hoạch hiển thị) trong thư mục kế hoạch và các siêu liên kết mà tôi đang cố gắng là

<a href="<?php echo $router->generate('plan'); ?>">Plan <?php echo $router->generate('plan'); ?></a> 

whi ch không hoạt động.

Bạn có thể trợ giúp không?

Trả lời

2

Bạn không thể gọi plan.php bằng cách thông qua plan.php như một cuộc tranh cãi để match chức năng

Kiểm tra ví dụ tại http://altorouter.com/usage/processing-requests.html

Nếu bạn muốn sử dụng nội dung từ plan.php

bạn nên sử dụng map trong định dạng sau

$router->map('GET','/plan/', function() { 
    require __DIR__ . '/plan/plan.php'; 
} , 'plan'); 

vào tệp plan/plan.php thêm echo 'testing plan';

Ngoài ra, hãy kiểm tra tập tin .htaccess bạn có chứa

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . index.php [L] 

Ngoài ra, nếu bạn thiết lập đường cơ sở với $router->setBasePath('/alto');index.php tập tin của bạn nên được đặt trong thư mục alto để url của bạn sẽ là ở chỗ trường hợp http://example.com/alto/index.php

dụ làm việc:

require 'lib/AltoRouter.php'; 

$router = new AltoRouter(); 
$router->setBasePath('/alto'); 

$router->map('GET','/plan/', function() { 
    require __DIR__ . '/plan/plan.php'; 
} , 'plan'); 

// match current request 
$match = $router->match(); 

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'); 
} 

thì thao tác này chỉ hoạt động tốt

<a href="<?php echo $router->generate('plan'); ?>">Plan <?php echo $router->generate('plan'); ?></a> 
+0

Tôi nhận được trang chủ hoạt động nhưng không thể gọi plan.php. Trang chủ có liên kết để lập kế hoạch Plan mà tôi đã thay đổi thành Plan generate('plan'); ?>. –

+0

home # index công việc này vì hầu như bạn có lớp Home với chỉ mục phương thức trong đó. $ router-> map ('GET', '/ plan /', function() { yêu cầu __DIR__. '/plan/plan.php'; }, 'plan'); Khi tuyến đường phù hợp, chức năng này ở trên bao gồm tệp plan.php. Thay thế, bạn có thể tạo lớp 'kế hoạch' với chỉ mục phương thức và sau đó bạn sẽ có thể chuyển chỉ mục kế hoạch # theo cách tương tự như đối với trang chủ. –

Các vấn đề liên quan