Phalcon将对象从控制器传递到视图中

时间:2018-02-01 07:51:18

标签: phalcon volt

我是phalcon的新手,我想知道将一些数据从控制器传递到数据库视图的正确方法是什么。例如

$lastOrder = LeaOrder::findFirst([   
    'conditions' => 'user_id = ?1',
    'order' => "id DESC",
    'bind'       => [
        1 => $userID,
    ]
]);


$this->view->setVars([
    'lastOrder'=> $lastOnGoingOrder,
]);

我可以在LeaOrder对象中显示用户的数据,例如{{lastOrder->name}},还是应该在将对象传入视图之前创建toArray(),然后{{lastOrder[name]}}或者这不重要,就像我处理这个一样?谢谢你的所有建议,

1 个答案:

答案 0 :(得分:1)

您甚至可以使用快速语法:

$this->view->lastOrder = LeaOrder::findFirst([   
    'conditions' => 'user_id = ?1',
    'order' => "id DESC",
    'bind'       => [
        1 => $userID,
    ]
]);

在视图中:

// To access object properties
{{ lastOrder.name }}

// To access array keys
{{ lastOrder['name'] }}

Phalcon ORM返回Model对象,但是如果你真的需要一个数组,你可以在对象上调用->toArray()方法。

我建议您阅读文档中的这一部分:https://docs.phalconphp.com/en/3.2/volt 过滤器 - 部分也非常有用。

更新:调试ORM结果。 当转储ORM结果时,由于Phalcon正在使用DI(依赖注入),您会看到大量信息。一种简单的调试方法是在模型上调用->toArray()。这样您只能看到模型属性。

$this->view->order = LeaOrder::findFirstById(82);
print_r($this->view->order->toArray();

但请注意: toArray()正在将您的对象转换为数组,但由于您没有分配它而只是在print_r内进行调试,以后再进行调试将它用作代码/模板中的对象。

更新2: Phalcon调试的便捷功能

function d($what)
{
    if (is_object($what) AND method_exists($what, 'toArray')) {
        $what = $what->toArray();
    }
    echo '<pre>';
    print_r($what);
    die('</pre>');
}

// Usage:
$this->view->order = LeaOrder::findFirstById(82);
d($this->view->order);