2017-11-22 10 views
1

prod環境がアクティブなときに特定のアクションを「無効にする」ことは可能ですか?Symfonyプロダクションでのコントローラの動作を無効にする

私は本番環境では実行しないでください。いくつかのテストアクションがあります。

class TestController extends FOSRestController 
{ 
    /** 
    * @Rest\Get("/api/test", name="api_test") 
    */ 
    public function testAction(Request $request) 
    { 
     // something 
     return; 
    } 
} 
+4

:あなたは、メインのルータを拡張ルーティングファイルを定義することができます私はいつもconfigファイルを使うことを好みました。もしあなたがそれらを使っているのであれば、 'routing_dev.yml ' – JimL

+1

または環境を確認してください:https://stackoverflow.com/questions/10640866/accessing-the-appkernel-environment-variable-in-symfony-2 –

+0

@JimL hoすることはできますか?私はルーティング注釈を使用しています。 – StockBreak

答えて

0

オプション1:コントローラ環境をチェック

public function testAction(Request $request) 
{ 
    $env = $this->container->get('kernel')->getEnvironment() 

    if ($env !== 'dev') { 
     throw $this->createAccessDeniedException(); 
    } 

    //your action 
} 

オプション2:Rのみを含みますこのオプションについては、開発環境でOUTE

は、私はあなたの質問を言い換えるてみましょう:どのように開発環境でコントローラを有効にするには? (プロダクションでは無効にする代わりに)

Symfony Standard Edition「新しいアプリケーションのスケルトンとして使用できる完全機能のSymfonyアプリケーション」を見てください。 WebProfilerBundle(a.k.a. Web Debug Toolbar)のルートを含む開発環境を備えています。

dev環境では、config_dev.ymlがロードされています。私は知りません

config_dev.yml

framework: 
    router: 
     resource: '%kernel.project_dir%/app/config/routing_dev.yml' 
     strict_requirements: true 
    profiler: { only_exceptions: false } 

routing_dev.yml

test: 
    resource: '@TestBundle/Controller/' 
    type: annotation 

_main: 
    resource: routing.yml 
+0

こんにちは、私のAppController内にTestControllerを持っていればどうなりますか?私はそれを移動する必要がありますか?ありがとう。 – StockBreak

+0

私はあなたのTestControllerがいかに複雑かは分かりませんが、dev/test環境(AppKernel :: registerBundles参照)でAppKernelに追加されたTestBundleを作成したいと思うかもしれません。 –

+1

私の例のようにディレクトリを含めると、特定のコントローラを '除外'できるかどうかを調べます。 –

0

トグルと呼ばれるQandidate-labsによってサードパーティを利用することができます。 https://github.com/qandidate-labs/qandidate-toggle-bundle

トグルがあなたのparameters.ymlファイルのエントリをオフに基づいて設定することができますまたは私はあなたがENV

に基づいて、それを行うことができます。そしてこの方法の一番上にあなただけのアノテーションを使用疑います以下に似て:

/** 
* @Toggle("another-cool-feature") 
*/ 
public function barAction() 
{ 
} 
関連する問題