使用ORM :: factory从数据库中获取

时间:2014-05-03 13:20:44

标签: php orm kohana kohana-orm ushahidi

我试图为在Ushahidi地图平台上运行的网站编写插件。

Ushahidi使用Kohana。我正在运行的版本使用Kohana 2。

网站上的大多数页面都称为报告页面。这是一个例子:

https://trashswag.com/reports/view/1106

此页面从数据库中提取大量数据。例如,报告标题"咖啡桌"已填充,必须从数据库中完成。

我的目标是为每个报告页面添加元描述标记:

<meta name="description" content=[report_title]."at".[report_location] />

我所寻求的所有数据都存在于表MyDatabase.incident

第一步是report_title。每个报告页面都应动态地从数据库中提取自己的报告标题,并将其添加到元描述标记中。

生成每个报告页面的html的视图称为detail.php。 Detail.php必须已经将其报告标题显示在页面上(参见上面的示例网站链接)。我滚动浏览detail.php以找出行踪以及平台如何做到这一点。我在第17行找到了这个:

<h1 class="report-title"><?php echo html::escape($incident_title);

以下是detail.php:https://gist.github.com/anonymous/a2cbf012c7abcfee694e

的要点

上面的代码段必须将显示在页面顶部附近的现有报告标题添加到主导航栏下方的左侧。

我想抓住相同的内容 - &#34;咖啡桌&#34;并将其添加到我的元标记。我是通过我试图构建的插件来做到这一点的。该插件是通过一个钩子添加的,如果我试图简单地回显$incident_title,它就没有被定义,因为它可能是在不同的脚本中。

我无法看到或理解在Kohana2上运行的Ushahidi平台如何设置此变量。

在试错中,我设法获取以下代码段来提取数据库中第一份报告的报告标题:

$incititle = ORM::factory('incident',1)->incident_title;

我需要更改的是数字1.例如,我上面提供的链接应填充:

$incititle = ORM::factory('incident',1106)->incident_title;

如何编辑此代码段,以便动态添加每个报告页面的事件ID:

$incititle = ORM::factory('incident',[What goes here?])->incident_title;

1 个答案:

答案 0 :(得分:1)

Kohana 2已经过时了,所以我无法找到doc,但是你需要param id。对于Ko3,它是:

// Can be used anywhere:
$id = Request::instance()->param('id');
// From within a controller:
$this->request->param('key_name');

我应该是https://trashswag.com/reports/view/1106的数字形式。它通常是id,但有时开发人员会更改此变量的名称...在路线规则中检查它。

因此,在您的插件中,您应首先检索相应的记录,然后为视图分配值。最快(但不是最安全)的方式是分配全局。

$incident = ORM::factory('incident',Request::instance()->param('id'));
View:set_global('incident_title',$incident->incident_title);
View:set_global('report_title',$incident->report_title);
View:set_global('report_location',$incident->report_location);
//Uou have meta in `incident_meta` column?
//View:set_global('incident_meta',$incident->incident_meta);

现在你可以在你的视图中使用$ report_location等变量

如果您在report_location表中没有列incident等,则需要从右表中获取此值。显示结构...

相关问题