我正在使用Symfony并创建一个带有3层的软件(客户端,apache,mysql)。因此,当symfony应用程序持续存在并刷新某些内容时,我不知道如何获得法规?
当我在数据库中添加内容时,我会显示“添加完成”等提醒!但如果我的数据库关闭,我会显示“添加完成”,尽管失败...
那么如何获得这些函数的规则(flush / persist)?如何更改我的警报开关?
致以最诚挚的问候,
答案 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 !!!