在Laravel中从控制器传递到视图时数据丢失

时间:2014-07-22 17:54:35

标签: laravel laravel-4 eloquent

在我的一个控制器中,我将从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

1 个答案:

答案 0 :(得分:0)

我终于弄明白了问题所在。我正在使用robclancy/presenter包来包装和渲染视图中的对象。对于它,模型必须实现PresentableInterface接口。实现接口要求方法具有getPresenter方法。我在我的模型中添加了getPresenter方法,但我忘了从该方法返回演示者。返回演示者解决了问题。

getPresenter方法中的代码是我忘记编写的代码。

public function getPresenter()
{
    return new ProductCategoryPresenter($this);
}

谢谢你们试图提供帮助。