我正在使用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文件而不是刀片模板时起作用。我还是不知道导致错误的原因是什么?
答案 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调用。