Конвертирайте HTML Megamenu в Yii CMenu zii Widget

Току-що започнах да работя с Yii и имам проблеми с конвертирането на моето HTML Megamenu в Yii. По принцип моят html е нещо подобно:

<div class="nav-wrapper">
    <div class="container">
        <ul class="some_class">
            <li class="active"><a href="/bg#">Parent 1</a>
                <div class="megamenu">
                    <div class="row">
                        <a href="/bg#" class="overview">Child 1</a>
                    </div>
                    <div class="row">
                        <div class="col1">
                            <ul>
                                <li><a href="/bg#">Child 3</a></li>
                                <li><a href="/bg#">Child 4</a></li>
                            </ul>
                        </div>              
                    </div>
                </div>
            </li>
         </ul>
     </div>

Adapting this to CMenu widget is proving more difficult than I thouht...especially for e starter like me. I can come up with the classes and lists, but how do I put the Divs within the CMenu Widget?

Благодаря


person gabz    schedule 23.04.2014    source източник


Отговори (1)


Трябва да създадете своя собствена джаджа. Създаването на джаджа не е по-трудно от създаването на контролери.

Започнете от нещо просто, за да видите как свири. Нека опитаме нещо, това е бърз пример, не обработва рекурсия, но може да се оправи:

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:

<div class="nav-wrapper">
    <div class="container">
        <ul class="some_class">
              <?php foreach($items as $item):?>
            <li class="active"><a href="/bg#"><?=$item['title'];?></a>
                <div class="megamenu">

                    <div class="row">
                        <a href="/bg#" class="overview"><?= $item['overview'];?></a>
                    </div>
                    <div class="row">
                        <div class="col1">
                            <ul>
                                         <?php foreach($item['items'] as $row):?>
                                <li><a href="/bg#"><?= $row['title'];?></a></li>
                                          <?php endforeach;?>
                            </ul>
                        </div>
                    </div>
                </div>
            </li>
                <?php endforeach;?>
         </ul>
     </div>
</div>

След това го използвайте във вашия изглед ccontorller

<?php
$this->widget('path.to.MyMenu', [
    'items' => [
        [
            'title' => 'Foo',
            'overview' => 'Some overview',
            'items' => [
                [
                    'title' => 'Bar'
                ],
                [
                    'title' => 'Baz'
                ]
            ]
        ]
    ]
]);
?>

ОТКАЗ ОТ ОТГОВОРНОСТ: Не е тествано, само за да покажа идея, може да работи или не.

person Community    schedule 23.04.2014