我需要设置一个Symfony应用程序的现场演示。
如何将所有内容都设为只读?用户应该能够尝试所有功能,但不能让其他人看到任何持久性更改。
我可以删除对mysql用户的INSERT和UPDATE权限,但是当他们尝试保存某些内容时,这将是一个丑陋的错误500 ...
答案 0 :(得分:2)
快速而肮脏的方式让您的整个应用程序只读。
<强>的appbundle / EventSubscriber / EntitySubscriber.php 强>
namespace AppBundle\EventSubscriber;
use Doctrine\Common\EventSubscriber;
use Doctrine\ORM\Event\PreFlushEventArgs;
class EntitySubscriber implements EventSubscriber
{
public function getSubscribedEvents()
{
return [
'preFlush'
];
}
public function preFlush(PreFlushEventArgs $args)
{
$entityManager = $args->getEntityManager();
$entityManager->clear();
}
}
<强> services.yml 强>
app.entity_subscriber:
class: AppBundle\EventSubscriber\EntitySubscriber
tags:
- { name: doctrine.event_subscriber, connection: default }
答案 1 :(得分:0)
我想你已经成功了。但如果没有:
这些或多或少都是简单的方法,它们与平台无关。
根据Symfony应用程序级别更改此选项可能有两个缺点之一。你要么不保存任何东西,因此你的演示不能很好地展示给顾客。或者你必须对代码进行大量操作,并在演出结束后立即抛出这些巨大的工作。
答案 2 :(得分:0)
也许您可以使用Session来执行此操作或使用可在Symfony中实现的Memcache(Web上提供了一些示例)。希望这会有所帮助。