2017-06-02 28 views
1

My Phalcon Microアプリケーションは、エンコードされたスラッシュ(%2F)でURIパーツを受け取ります。例えばPhalcon Microの "handle()"メソッドがURIをデコードします

$app->handle()を呼び出す前に:

echo $app->request->getURI(); // -> /resources/res%2F01/all 

しかし$app->handle()方法がスラッシュに私%の2Fの変換、私のURIをデコードしているように見えます。したがって、次のルーティングルール...

$app->get('/resources/{code:[^\/]+}/all', function() { /* ... */ }); 

%2Fは現在スラッシュであるため、正しく動作しません。コントローラー側では、%2Fは存在しません。

echo $code // -> res/01 

PhalconにURIをデコードしないように指示する方法はありますか?


EDIT

端において、PhalconはURIをデコードされていないが、そのルーティングのため$_GET['_url']パラメータに基づいて、および%2Fコードが既に存在欠落しています。

答えて

1

あなたのURLはルートregexpで受け付けていません。あなたはルート定義のスラッシュを許可しません - [^\/]+

このURLルート一致させたい場合は、ルート定義の必見は次のようになります。

$app->get('/resources/{code:.+}/all', function() { /* ... */ }); 

URIをデコードしないようにPhalconを伝える方法はありますか?

だと思います。

+0

ニース。私は '正規表現'も '/ all'部分を取ると思っていましたが、そうではないように見えます。 Phalconに関しては、ソースを見た後、URIをデコードしていないようですが、$ _GET ['_ url']に基づいており、%2Fはすでにそこにはありません。 – kagmole

関連する問題