Symfony2获取刷新功能的错误代码

时间:2014-04-24 13:36:23

标签: symfony doctrine-orm

我正在使用Symfony并创建一个带有3层的软件(客户端,apache,mysql)。因此,当symfony应用程序持续存在并刷新某些内容时,我不知道如何获得法规?

当我在数据库中添加内容时,我会显示“添加完成”等提醒!但如果我的数据库关闭,我会显示“添加完成”,尽管失败...

那么如何获得这些函数的规则(flush / persist)?如何更改我的警报开关?

致以最诚挚的问候,

2 个答案:

答案 0 :(得分:10)

试用& catch block:

try {
     $article = new Article(); //Example entity
     $em = $this->getDoctrine()->getEntityManager();
     $em->persist($article);
     $em->flush();  
     $this->get('session')->setFlash('flash_key',"Add done!");

 } catch (Exception $e) {
     $this->get('session')->setFlash('flash_key',"Add not done: " . $e->getMessage());
 }

如果您遇到错误,请尝试使用" \ Doctrine \ ORM \ ORMException $ e",\ Doctrine \ DBAL \ DBALException $ e"或" \例外$ e"在catch()

答案 1 :(得分:0)

我的问题是我将一个复杂的对象传递到一个字符串,该字段期望一个字符串,即使我已将该列设置为ManyToOne。显然@ORM \ Column覆盖了那个。

然而!这不是错误是有趣的,而是我修复它的方式。

我遇到了PDOException。我不得不深入研究xdebug和PHPStorm的代码。 xdebug受许多PHP IDE支持。 xdebug很难设置你设置的前几次。总是有一些防火墙麻烦或麻烦让它出现在你的phpinfo()或xdebug.enable_remote或xdebug.remote_host中。

习惯它。去做就对了!不认真。在xdebug工作之前,不要在PHP中编写另一行代码;即使你遇到了800万个问题。您将在编码中节省多年的生命。

我不知道Symfony,但ZF3现在带有Vagrantfile。您可以在Zf3项目目录中安装vagrant和Oracle VirtualBox,键入vangrant up,并在http://localhost:8080处运行运行ZF3应用程序的全功能本地Web服务器。从那里我所要做的就是:

......首先,在我第一次调用vagrant up之前,我将以下行添加到Vagrantfile中 config.vm.network "private_network", ip: "192.168.33.10" ...然后我致电vagrant up

vangrant ssh
sudo -s
apt-get install php-xdebug
echo "xdebug.remote_enable = 1" >> /etc/php/7.0/apache2/php.ini
echo "xdebug.remote_host = 192.168.33.1" >> /etc/php/7.0/apache2/php.ini
apachectl restart

在你的phpinfo()中,你应该看到xdebug somwhere。只需ctrl + f就可以了。如果它在那里,你主要是在做生意。

然后我在防火墙上添加了端口9000的规则。然后我开始了一个xdebug会话。如果它不起作用您可以暂时关闭Windows防火墙以检查它是否有效,但请记住立即启用它并确保它不仅仅是防火墙。为端口9000上的传入设置防火墙规则,并允许ip 192.168.33.10。如果你不知道怎么做...你为什么要开发网络软件?

学习使用xdebug !!!