方法Illuminate \\ View \\ View :: __ toString()不得在unix中引发异常

时间:2014-09-24 04:57:08

标签: php laravel-4

我正在使用laravel 4.2

die(View::make('amendments.changesPopUp', $this->data));

这是我用于获取ajax调用视图的代码。这适用于在Windows上运行的本地计算机,但这不适用于服务器(unix)。知道为什么这是hapening吗?

是的,我检查了小写和大写,文件名匹配的情况。奇怪的是错误指向它正在使用的controller的第0行。

这是我得到的错误

{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Method Illuminate\\View\\View::__toString() must not throw an exception","file":"mysite.com/app/controllers/myController.php","line":0}}

更新:这在我使用简单的php文件而不是刀片模板时起作用。我还是不知道导致错误的原因是什么?

2 个答案:

答案 0 :(得分:8)

如上所述,除了调试目的之外,不要使用die()。

另外需要注意的是,因为PHP对__toString实现的错误处理非常糟糕(没有堆栈跟踪等),所以使用echo View::make(...)->render()代替echo View::make(...)来获取更具描述性的错误 - 尽管在你的情况下你可以用die替换echo。

但是,再一次,不要使用死亡。

答案 1 :(得分:1)

你永远不应该die()输入。 Laravel期望处理响应,并且您使用die()来缩短框架。

您的回答应该只是

return View::make('amendments.changesPopUp', $this->data);

然后只会打印changesPopUp文件 - 浏览器会正确地拦截这个文件以进行AJAX调用。