是否可以"禁用" prod环境处于活动状态时的具体操作?
我有一些测试操作,不应该在生产环境中执行。
class TestController extends FOSRestController
{
/**
* @Rest\Get("/api/test", name="api_test")
*/
public function testAction(Request $request)
{
// something
return;
}
}
答案 0 :(得分:0)
您可以使用Qandidate-labs称为切换的第三方。 https://github.com/qandidate-labs/qandidate-toggle-bundle
切换可以根据parameters.yml文件中的条目进行设置或者我怀疑你可以根据env进行设置
然后在方法的顶部,您只需使用类似于下面的注释:
/**
* @Toggle("another-cool-feature")
*/
public function barAction()
{
}
答案 1 :(得分:0)
public function testAction(Request $request)
{
$env = $this->container->get( 'kernel' )->getEnvironment()
if ($env !== 'dev') {
throw $this->createAccessDeniedException();
}
//your action
}
对于此选项,让我重新提一下您的问题:如何在开发环境中启用控制器? (而不是在生产中禁用)
查看Symfony Standard Edition,"一个功能齐全的Symfony应用程序,您可以将其用作新应用程序的框架。"。它具有一个开发环境,其中包含WebProfilerBundle(a.k.a. Web调试工具栏)的路由。
在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