2017-02-08 10 views
0

Fat-Free Framework(F3)では、着信HTTP要求がアプリケーションで定義されたいずれのルートとも一致しないことがわかっている場合、既定のルートを設定する方法はありますかこれらの場合。たとえば、ファイルに定義されているすべてのルートの最後に、先行するルートと一致しない着信HTTPリクエストがあるルートを入力します。Fat-Free Frameworkで既定のルートを設定できます

基本的には、特定のクラス/コントローラに一致するものが見つからない場合は、すべてのリクエストをルーティングしたいと考えています。これは可能なことだと思われますが、F3ドキュメントのどこにも見つけられません。

答えて

1

最後のルートオプションとしてワイルドカードを使用するとどうなりますか?

$f3->route('GET /*')

+0

それは最後のルートとして '/ *'ルートを登録する必要はありません。ワイルドカードルート( '3.6'でテスト済み)ではスラッシュは省略可能です。 – Rayne

1

代わりにデフォルトルートを登録するには、404およびその他のエラーコードを処理することができるカスタムエラーハンドラを登録する方が良いでしょう。このアプローチでは、これらのエラーをプログラムでトリガするときに、エラーコントローラまたはエラー関数を再利用することができます。例えばBase->error(404)となります。

  1. それはbeforeRoute()afterRoute()イベントを使用することも可能です登録ONERRORハンドラ

と解析ERRORONERROR

  • とのハンドラを登録します。

    <?php 
    
    /** @var base $f3 */ 
    $f3->set('ONERROR', 'App\Module\Error\Controller\ErrorController->onError'); 
    
    class ErrorController 
    { 
        public function onError(Base $f3) 
        { 
         if ($f3->get('ERROR.code') == 404) { 
          /** 
          * TODO Generate an appropriate HTTP 404 page 
          */ 
    
          // Handled the `404` error. 
          return true; 
         } 
    
         // Let Fat-Free Framework's default error handler do the work. 
         return false; 
        } 
    } 
    
  • 関連する問題