首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使整个symfony应用程序只读

问使整个symfony应用程序只读
EN

Stack Overflow用户
提问于 2017-02-26 07:11:41
回答 3查看 1.3K关注 0票数 1

我需要建立一个现场演示的Symfony应用程序。

我怎么才能让一切都是只读的?用户应该能够尝试所有的功能,但不能让其他人看到任何持久的更改。

我可以删除mysql用户的插入和更新权限,但是当他们试图保存某些内容时,这将是一个丑陋的错误500。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-23 17:53:25

快速和肮脏的方式使你的整个应用程序只读。

AppBundle/EventSubscriber/EntitySubscriber.php

代码语言:javascript
复制
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

代码语言:javascript
复制
app.entity_subscriber:
    class: AppBundle\EventSubscriber\EntitySubscriber
    tags:
        - { name: doctrine.event_subscriber, connection: default }
票数 4
EN

Stack Overflow用户

发布于 2017-02-26 22:55:34

我想你已经成功了。但如果没有:

  1. 使用虚拟数据库。从原始数据库复制过来。让他们玩吧。当你不需要的时候放下它。
  2. 如果您无法访问数据库创建和删除,您仍然可以做到这一点。只需在Doctrine实体中向表名添加临时前缀即可。不需要重写整个应用程序,只需几行。运行迁移以创建新表。你想什么时候都可以放下。
  3. 使用虚拟机。在表演前拍一张快照。显示后回滚到保存的快照。

这些方法或多或少都很简单,而且与平台无关。

根据Symfony应用程序级别改变这一点可能有两个缺点之一。您要么不保存任何东西,因此您的演示工作不太好,以显示它的客户。或者你必须对代码做大量的操作,并在节目结束后立即抛出这一庞大的工作。

票数 0
EN

Stack Overflow用户

发布于 2017-02-27 08:20:56

也许您可以使用会话来完成这个任务,或者可以在Symfony中实现Memcache (一些例子可以在web上找到)。希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42465759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档