在我的一个控制器中,我将从Eloquent查询获得的结果传递给视图。但无论我如何将结果传递给视图,我都没有在视图中得到结果。
控制器:
class ProductCategoriesController extends BaseController
{
public function __construct()
{
parent::__construct();
// Add location hinting for views
View::addNamespace('product-categories', app_path() . "/MyVendor/ProductsManager/Views/admin/product-categories");
}
public function index()
{
$categories = ProductCategory::all();
return View::make('product-categories::index')
->with('title', 'All Product Categories')
->with('categories', $categories);
}
...
}
如果我在dd
控制器中查看$categories
index
的值,我会得到正确的Eloquent集合,如下所示:
object(Illuminate\Database\Eloquent\Collection)[655]
protected 'items' =>
array (size=1)
0 =>
object(MyVendor\ProductsManager\Models\ProductCategory)[653]
protected 'table' => string 'product_categories' (length=18)
protected 'guarded' => ...
但如果我dd
$categories
视图中的index
值,我会得到一个空的Eloquent集合,如下所示:
object(Illuminate\Database\Eloquent\Collection)[655]
protected 'items' =>
array (size=1)
0 => null
我在其他控制器中做类似的方法,它们工作正常。我不知道这个控制器有什么问题。我已经使用Laravel很长一段时间了,之前从未遇到过这个问题。也许我错过了一些东西,或者最近的软件包更新有问题。不管它是什么,它让我发疯。关于问题可能是什么的任何想法?
P.S。我正在使用Laravel Framework version 4.2.6
答案 0 :(得分:0)
我终于弄明白了问题所在。我正在使用robclancy/presenter
包来包装和渲染视图中的对象。对于它,模型必须实现PresentableInterface
接口。实现接口要求方法具有getPresenter
方法。我在我的模型中添加了getPresenter
方法,但我忘了从该方法返回演示者。返回演示者解决了问题。
getPresenter
方法中的代码是我忘记编写的代码。
public function getPresenter()
{
return new ProductCategoryPresenter($this);
}
谢谢你们试图提供帮助。