8

初めてルーター (AltoRouter) を使用しようとしていますが、ページを呼び出すことができません。

Web フォルダ構造

ここに画像の説明を入力 コード

インデックス.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');
}

plan フォルダーに plan.php (display plan) という名前のファイルがあり、試しているハイパーリンクは次のとおりです。

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

これは機能しません。

手伝ってくれますか?

4

1 に答える 1

4

関数plan.phpに引数として渡して plan.php を呼び出すことはできませんmatch

http://altorouter.com/usage/processing-requests.htmlで例を確認してください

plan.php のコンテンツを利用したい場合

map次の形式で使用する必要があります

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

ファイルplan/plan.phpに追加echo 'testing plan';

また、.htaccess ファイルに含まれていることを再確認してください。

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

$router->setBasePath('/alto');また、index.phpファイルでベースパスを設定する場合、altoディレクトリに配置する必要があるため、URLはその場合になりますhttp://example.com/alto/index.php

作業例:

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

その後、これはうまくいきます

<a href="<?php echo $router->generate('plan'); ?>">Plan <?php echo $router->generate('plan'); ?></a>
于 2016-08-04T20:16:10.010 に答える