Convert HTML Megamenu to Yii CMenu zii Widget
我刚开始使用 Yii,在将我的 HTML Megamenu 转换为 Yii 时遇到了一些问题。基本上我的 html 是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <ul class="some_class"> <li class="active">Parent 1 Child 1 <ul> <li> Child 3 </li> <li> Child 4 </li> </ul> </li> </ul> |
事实证明,将其适应 CMenu 小部件比我想象的要困难......尤其是对于像我这样的初学者。我可以想出类和列表,但是如何将 Div 放在 CMenu 小部件中?
谢谢
您应该创建自己的小部件。创建小部件并不比创建控制器难。
从简单的事情开始,看看它是如何发挥作用的。让我们尝试一下,这是一个简单的示例,不处理递归,但可能没问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 | class MyMenu extends CWidget { public $items = []; public function init() { // Possibli do something with items } public function run() { $this->render('menu', ['items' => $this->items]); } } |
在views/menu.php中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <ul class="some_class"> <?php foreach($items as $item):?> <li class="active"><?=$item['title'];?> <?= $item['overview'];?> <ul> <?php foreach($item['items'] as $row):?> <li> <?= $row['title'];?> </li> <?php endforeach;?> </ul> </li> <?php endforeach;?> </ul> |
然后在你的 ccontorller 视图中使用它
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php $this->widget('path.to.MyMenu', [ 'items' => [ [ 'title' => 'Foo', 'overview' => 'Some overview', 'items' => [ [ 'title' => 'Bar' ], [ 'title' => 'Baz' ] ] ] ] ]); ?> |
免责声明:未经测试,只是为了展示想法,可能有效或无效。