使用Codeigniter 2.2.1
我正在尝试使用此示例解析RSS提要: http://hasokeric.github.io/codeigniter-rssparser/
我已下载该库并已添加到我的库文件夹中。
然后我将此代码添加到我的视图中:
function get_ars()
{
// Load RSS Parser
$this->load->library('rssparser');
// Get 6 items from arstechnica
$rss = $this->rssparser->set_feed_url('http://feeds.arstechnica.com/arstechnica/index/')->set_cache_life(30)->getFeed(6);
foreach ($rss as $item)
{
echo $item['title'];
echo $item['description'];
}
}
当我调用函数get_ars();
时,我收到以下错误:
致命错误:在第8行的C:\ wamp \ www \ xxxx \ application \ views \ pagetop_view.php中不在对象上下文中时使用$ this
我看了this post,但它没有解决我的问题。
有人可以告诉我我做错了吗
答案 0 :(得分:2)
请勿在视图中直接包含功能代码 创建辅助函数,然后在视图中使用它。例如,
1)helpers / xyz_helper.php
function get_ars()
{
$ci =& get_instance();
// Load RSS Parser
$ci->load->library('rssparser');
// Get 6 items from arstechnica
$rss = $ci->rssparser->set_feed_url('http://feeds.arstechnica.com/arstechnica/index/')->set_cache_life(30)->getFeed(6);
foreach ($rss as $item)
{
echo $item['title'];
echo $item['description'];
}
}
2)在自动加载文件中加载助手(config / autoload.php)
$autoload['helper'] = array('xyz_helper');
3)现在您可以在视图中使用
<?php
$ars = get_ars();
foreach($ars as $a) {
?>
...
...
<?php } ?>
阅读文档:
Helper
Creating Libraries
答案 1 :(得分:1)
试试这个
$CI =& get_instance();
之后使用$ CI代替$ this。
答案 2 :(得分:1)
CodeIgniter是一个MVC框架。这意味着你不应该在视图中加载东西或编写函数。
但是,您可以在视图中调用函数。这些函数必须写在帮助器中。
有关详细信息,请参阅此处:http://www.codeigniter.com/user_guide/general/helpers.html
编辑:请参阅Parag Tyagi对助手解决方案的回答
此外,在您的情况下,您应该能够通过将vars从控制器传递到视图来实现您的需求。
我想这里你的视图已加载到你的索引()中,你的名字被命名为#34; myview&#34;。
控制器:
public function index()
{
// Load RSS Parser
$ci->load->library('rssparser');
$data["rss"] = $ci->rssparser->set_feed_url('http://feeds.arstechnica.com/arstechnica/index/')->set_cache_life(30)->getFeed(6);
$this->load->view("myview", $data);
}
查看:
<?php
foreach ($rss as $item)
{
echo $item['title'];
echo $item['description'];
}
?>