我是yii的新手。我正在Yii中做一个小应用程序。假设我有一些像product, sales, discount, customer,这样的表,现在我已经为这些表做了所有的模型和控制器(Crud)。现在,当管理员想要输入一个新产品时,他正在输入
http://localhost/application/index.php?r=product。同样地,他必须输入折扣才能进入折扣区。现在,我想将所有模块呈现在一个应用程序中,就像仪表板一样。那里的管理员可以直接做出改变,他想要从单一的网页。所以有人能告诉我如何解决这个问题吗。任何帮助和建议都将是值得赞赏的。
编辑我已经读过一些链接,但是我没有在那里找到任何文档。
发布于 2013-07-19 13:32:45
首先,您应该考虑应该在仪表板上显示什么,您已经选择了一些实体。这些实体可能有不同的标准来显示项目:
sales会表现出最高的销售额?现在,您应该选择何时允许对这些项执行一些操作。
publish、updateorders现在,要实现这一点,您必须定义几个数据提供程序,设置几个列表视图,并将所有这些放入您的DashboardController中。不是的!从Yii的约定和MVC的一般情况来看,应该有:fat模型、这个控制器和wise视图。
考虑到以上情况,您应该为每种类型的数据创建小部件。小部件应该是“独立的”,这将类似于您的仪表板的“模型”。应该包含实体类型所需的所有逻辑,而不应该要求任何配置(也用于自动创建)。
对于仪表板小部件,您还应该为此目的创建一些基类,因此仪表板小部件将始终如一地看上去:要有一些布局。
CPortLet是一个很好的开端--它已经定义了一些想法,比如仪表板小部件、标题,以及围绕它的内容的div。
下面是一些从portlet开始的示例:
class ProductDashboard extends CPortlet // Or intermediate class, ie. DashboardItem
{
protected $_products = array();
public function init()
{
$this->_products = new CActiveDataProvider('Product', array(
'criteria'=>array(
'with'=>array('...'),
'order'=>'t.sort_order ASC',
'condition'=>'...',
'together'=>true,
),
));;
$this->title= 'Newset producs';
parent::init();
}
protected function renderContent()
{
$this->render('productDashboard');
}
}在portlet视图中,views/productDashboard.php只放置listview:
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_productView',
'enablePagination'=>true,
));在_productView中放置任何关于产品的内容:
<h4><?= CHtml::encode($data->name); ?></h4>
<p><?= CHtml::encode($data->description); ?></p>
<p>
<?= CHtml::link('Update', array('/product/update', 'id' => $data->id)); ?>
<?= CHtml::link('View', array('/product/view', 'id' => $data->id)); ?>
... More actions ...
</p>最后,在仪表板索引视图中放置这些portlet:
$this->widget('path.to.ProductDashboard');
$this->widget('path.to.SalesDashboard');
....或者以某种自动化的方式:
// Possibly user defined only etc.
$widgets = array('ProductDashboard', 'SalesDashboard', ...);
foreach($widgets as $name)
$this->widget($name)发布于 2013-07-13 10:41:29
发布于 2013-07-16 17:52:50
听起来你想要实现一个菜单。假设您至少已经通过了Ignat提到的创建第一个YIIApplication的,您可以阅读CMenu类文档来了解它们,您的修改将在protected\views中的layout.php文件中进行。
https://stackoverflow.com/questions/17629198
复制相似问题