我有一个博客,其中有不同的博客类型,每个博客类型都有很多博客文章。我正在传递博客类型的ID以获取博客文章(外键关系船)的详细信息。对于侧边栏我创建了一个小部件,我想将blogtype ID传递给小部件,以便我可以显示相应博客类型的最新帖子。
我在视图文件中尝试了这个
$this->widget('application.widget.blogs',array(blog_type_id=>$res_blog));
这在小部件中
class Categories extends CWidget
{
public $blog_type;
public function run()
{
echo $blog_type;
}
}
但似乎没有任何效果。
任何人都可以查看问题
答案 0 :(得分:2)
怎么做?我的例子......
文件夹结构:
Application (Your App Folder)
|
|
protected (Folder)
|
|
widget (Folder)
|
|
views (Folder)
| |
| blog.php (PHP View file)
|
Blog.php (PHP Class file)
Blog.php 在protected / widget /
下 <?php
class Blog extends CWidget
{
public $dataProvider;
public function init()
{
// this method is called by CController::beginWidget()
}
public function run()
{
$dataSet=$this->dataProvider->getData();
$this->render('blog', array('dataSet'=>$dataSet));
}
}
?>
blog.php 在protected / widget / views /
下 <!-- Your View as you want. Example: -->
<table>
<tr>
<th>Blog Name</th>
<th>Description</th>
</tr>
<?php foreach ($dataSet as $data): ?>
<tr>
<td><?= $data->name; ?></td>
<td><?= $data->description; ?></td>
</tr>
<?php endforeach; ?>
</table>
如何使用此小部件
<?php
$dataProvider=new CActiveDataProvider('YourBlogModel'); //It has to come from controller
$this->widget('application.widget.Blog', array('dataProvider' => $dataProvider));
?>
答案 1 :(得分:1)
将小部件保留在Components/Blogs.php
上,并创建如下代码。
class Blogs extends CWidget
{
public $blog_type_id;
public function run()
{
echo $this->blog_type_id;
// put other relevant code here.
}
}
而且,你可以用,
来调用它$this->widget('blogs',array(blog_type_id=>$res_blog));
如果您将上面的类代码放在 protected / widget / Blogs.php 中,那么您可以将此小部件称为
$this->widget('application.widget.blogs',array(blog_type_id=>$res_blog));