現在、私のRouter
クラスでは、私はこの機能があります。ダイナミックパラメータを使用したURLルーティング?
public function findRouteForRequestURI($uri)
{
if(isset($this->routes[$uri])) {
$match['class'] = $this->routes[$uri]['controller'];
$match['action'] = $this->routes[$uri]['action'];
if(isset($this->routes[$uri]['params'])) {
// Not sure about this part yet
if ($this->routes[$uri]['params']) {
$uriSegments = explode('/', $uri);
$match['params'] = $uriSegments;
}
}
return $match;
}
return false;
}
をそして、私はホワイトリストルートのこの配列、$this->routes
あります
private $routes = array(
'/' => array(
'controller' => 'controllers\product\Product',
'action' => 'getAllProducts'
),
'/cart' => array(
'controller' => 'controllers\cart\Cart',
'action' => 'getCartDetails'
),
'/product/\d+/' => array(// Not sure how to do this for routes with dynamic parameters
'controller' => 'Product',
'action' => 'getProductDetails',
'params' => true
)
);
を私の問題は、私はどのように私は希望わからないです動的パラメータを持つURLのホワイトリストに登録されたルートを作成します。 がありたいとします。セグメント12
は任意の数値にすることができます。
/product/:id
実際にはコントローラProduct
を、getProductDetails
という1つのパラメータ(productId
)を使用する方法で検索しようとします。ただし、ここには表示されていません。検索およびインスタンス化の部分は、私のDispatcher
クラスにあります。
ありがとう:これに
コンサートであなたのルート配列少しクリーナーを保つことができます!しかし、ちょうど1つの質問ですが、なぜあなたは '$ uri'を最後に設定しましたか? ''/''で設定してください。 $ uriSegments [0]; ' – herondale
これまでのように、配列からアクションとコントローラを取得できるように、答えを編集しました。お役に立てて嬉しいです!私はあなたが私の答えを受け入れることができれば感謝します。 – larsAnders