使用PRADO将数据传递到视图时出现问题

时间:2013-04-15 09:04:06

标签: php model-view-controller prado

我已经获得了一个维护网站。该网站正在使用PRADO框架,我不得不做一些小的改动。 HTML和CSS更改没有问题,但现在我必须将一些数据从页面传递到视图。 我尝试过使用:

$this->HomeCalendar2->DataSource = $result['data'];
$this->HomeCalendar2->dataBind();

但它说Component property 'Home.HomeCalendar2' is not defined.

在我的代码上方有以下代码:

$this->HomeCalendar->DataSource = $result;
$this->HomeCalendar->dataBind();

它工作得很好,我看不出HomeCalendar的定义在哪里。 任何帮助将不胜感激。

P.S:我以前从未与PRADO合作过。

1 个答案:

答案 0 :(得分:2)

这个问题现在已经很老了,希望你已经解决了。

使用DataSource意味着你的模板(.page或.tpl)中必须有一个TDataBoundControl组件,如下图所示(例如使用TRepeater)

<com:TRepeater ID="HomeCalendar">
<!--- [ properties like ItemTemplate here and it contents ] --->
</com:TRepeater>

TDataBoundControl的子类用于需要循环结果的组件,(以某种方式排序forforeach)。 如果你需要将一个signle结果传递给视图,你可以使用TPanel / TActivePanel,TLiteral等组件,或者只使用expression tag

示例:

表达式标签:

Php:

<?php
$this->myvalue = 'Hello World!';

模板:

<h1><%= $this->myvalue %></h1>

或其他解决方案:

模板:

<com:TLiteral ID="MyLiteral" />

PHP:

<?php
$this->MyLiteral->getControls()->add('<h1>Hello world !</h1>');