Fuelphp-routing
FuelPHP-ルーティング
ルーティングマップは、特定のコントローラーのメソッドへのURIを要求します。 この章では、FuelPHPの*ルーティング*の概念について詳しく説明します。
設定
ルート設定ファイルは fuel/app/config/routes.php にあります。 デフォルトの routes.php ファイルは次のように定義されています-
<?php
return array (
'_root_' => 'welcome/index', //The default route
'_404_' => 'welcome/404', //The main 404 route
'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'),
);
ここで、 _ root_ は定義済みのデフォルトルートであり、アプリケーションがルートパスで要求されたときに一致します。 http://localhost:8080/。 rootの値は、コントローラーと、一致したときに解決されるアクションです。 welcome/index は、_Controller_Welcome_コントローラーおよび_action_index_アクションメソッドに解決されます。 同様に、次の予約済みルートがあります。
- root -URIが指定されていない場合のデフォルトルート。
- 403 -HttpNoAccessExceptionが見つかった場合にスローされます。
- 404 -ページが見つからない場合に戻ります。
- 500 -HttpServerErrorExceptionが見つかった場合にスローされます。
シンプルなルーティング
ルートはリクエストURIと比較されます。 一致が見つかった場合、要求はURIにルーティングされます。 単純なルーティングは次のように説明されます。
return array (
'about' => 'site/about',
'login' => 'employee/login',
);
ここで、 about はhttp://localhost:8080/aboutと一致し、コントローラー、Controller_Siteおよびアクションメソッド、action_aboutを解決します。
*login* はhttp://localhost:8080/loginと一致し、コントローラー、Controller_Loginおよびアクションメソッド、action_loginを解決します
高度なルーティング
ルートに正規表現を含めることができます。 燃料は、次の高度なルーティング機能をサポートしています-
- *:any *-これはURIのその時点以降のすべてに一致し、「nothing」には一致しません
- *:everything *-:anyに似ていますが、「nothing」にも一致します
- *:segment *-これはURIの1つのセグメントのみに一致しますが、そのセグメントは何でもかまいません
- *:num *-これは任意の数字と一致します
- *:alpha *-これは、UTF-8を含むすべてのアルファ文字に一致します
- *:alnum *-これは、UTF-8を含む任意の英数字と一致します
たとえば、次のルートはURI http://localhost:8080/hello/FuelPHP_に一致し、コントローラー、_Controller_Welcome、およびアクション_action_hello_を解決します
'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'),
_Controller_Welcome_の対応するアクションメソッドは次のとおりです。
public function action_hello() {
$this->name = Request::active()->param('name', 'World');
$message = "Hello, " . $this->name;
echo $message;
}
ここでは、Requestクラスを使用して、URLからnameパラメーターを取得しています。 名前が見つからない場合は、_World_をデフォルト値として使用しています。 _Request_および_Response_の章で_Request_クラスを学習します。
結果
HTTPメソッドアクション
FuelPHPは、HTTPメソッドのプレフィックス付きアクションに一致するルートをサポートします。 基本的な構文は次のとおりです。
class Controller_Employee extends Controller {
public function get_index() {
//called when the HTTP method is GET.
}
public function post_index(){
//called when the HTTP method is POST.
}
}
次のように、構成ファイルのHTTP動詞に基づいてURLをコントローラーとアクションにルーティングできます。
return array (
//Routes GET/employee to/employee/all and POST/employee to/employee/create
‘employee’ => array(array('GET', new Route(‘employee/all')), array('POST',
new Route(‘employee/create'))),
);