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

Phalcon pass object from controller into view

我是 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]}} 或者这并不重要,就像我处理这个一样?谢谢大家的建议,

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

$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 returns 模型对象,但是如果你真的需要一个数组,你可以在你的对象上调用 ->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 中进行调试目的,稍后您将在 code/template.

中将其用作对象

更新 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);