我需要建立一个现场演示的Symfony应用程序。
我怎么才能让一切都是只读的?用户应该能够尝试所有的功能,但不能让其他人看到任何持久的更改。
我可以删除mysql用户的插入和更新权限,但是当他们试图保存某些内容时,这将是一个丑陋的错误500。
发布于 2017-08-23 17:53:25
快速和肮脏的方式使你的整个应用程序只读。
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 }发布于 2017-02-26 22:55:34
我想你已经成功了。但如果没有:
这些方法或多或少都很简单,而且与平台无关。
根据Symfony应用程序级别改变这一点可能有两个缺点之一。您要么不保存任何东西,因此您的演示工作不太好,以显示它的客户。或者你必须对代码做大量的操作,并在节目结束后立即抛出这一庞大的工作。
发布于 2017-02-27 08:20:56
也许您可以使用会话来完成这个任务,或者可以在Symfony中实现Memcache (一些例子可以在web上找到)。希望这能帮上忙。
https://stackoverflow.com/questions/42465759
复制相似问题