我不明白我的代码中哪里有错误。但是我认为是在init()
函数中!
var_dump ($this->newsType());
No method or closure named "my" was found in the NewsStream class and its behaviors.
个
这是NewsStream.php(小部件类)
public function init()
{
$data = [
'content' => [],
'error' => 'Модуль отключен.',
];
if (config('news_stream.allow') == 0) {
$data = cache()->get(CacheNames::NEWS_STREAM);
if ($data === false) {
$data = [];
try {
// Подключаюсь к БД
$this->db = Yii::createComponent([
'class' => 'CDbConnection',
'connectionString' => 'mysql:host=127.0.0.1;port=3306;dbname=la2worldweb',
'enableProfiling' => YII_DEBUG,
'enableParamLogging' => true,
'username' => 'root',
'password' => 'xdemonx1234',
'charset' => 'utf8',
'emulatePrepare' => true,
'tablePrefix' => 'ghtweb',
]);
app()->setComponent('NewsStreamDb', $this->db);
$newsType = config('news_types.type');
if (method_exists($this, $newsType)) {
$data['content'] = $this->$newsType();
foreach ($data['content'] as $k => $v) {
$data['content'][$k]['id'] = $this->getNewsLink($v['id']);
$data['content'][$k]['title'] = $this->getNewsTitle($v['title']);
$data['content'][$k]['updated_at'] = $this->getLastDate($v['updated_at']);
$data['content'][$k]['user_id'] = $this->getAuthorId($v['author_id']);
}
if (30) {
cache()->set(CacheNames::NEWS_STREAM, $data, 30 * 60);
}
} else {
$data['error'] = 'Метод для обработки форума не найден.';
}
} catch (Exception $e) {
$data['error'] = $e->getMessage();
}
}
}
app()->controller->renderPartial('//news_stream', $data);
}
这是对该小部件的调用
<div class="icon" id="icon_blue1"></div>
<div class="line_blue">
<h1 class="line">Новости </h1>
<?php $this->widget('app.widgets.NewsStream.NewsStream') ?>
</div>
这就是错误捕捉
1条答案
按热度按时间new9mtju1#
您正在尝试访问
NewsStream
类上名为my
的方法或属性。此类似乎没有任何具有此名称的属性或get
方法。由于在您的示例中没有使用这种类型的调用的代码,我假设它是在另一个地方完成的,所以请检查您的代码(特别是表单给予的错误),以查看是否有人试图访问类似
$newsStreamModel->my
的内容。另外,在widget内部创建
CDbConnection
组件也不是一件好事。这应该通过配置文件来完成,请阅读官方文档以了解更多信息:Data Access Objects (DAO)同样,不要在小部件内部执行
app()->controller->renderPartial
。只需要"echo"
输出,并将渲染留给控制器。这就像你的小部件正在尝试做控制器的工作。如果有一天你需要在另一个控制器中使用这个小部件,使用另一种代码,你可能无法做到。