Yii 1.1.21 : เป็นไปได้ไหมที่จะสร้างปุ่มแบบเลื่อนลงสองปุ่มในกลุ่มปุ่มเดียวกัน

ฉันยังใหม่กับ Yii และกำลังมองหาเอกสารเกี่ยวกับ Yii และ CMenu ฉันใช้ Phalcon และเฟรมเวิร์กอื่นๆ ที่มีตัวเลือกคล้ายกัน แต่กลไกเมนูของ Yii นั้นใหม่สำหรับฉัน

ฉันกำลังพยายามสร้างเมนูปุ่มที่มีปุ่มเมนูแบบเลื่อนลงสองปุ่ม โดยแต่ละปุ่มมีรายการเมนูย่อย เช่นนี้: กลุ่มปุ่มแบบเลื่อนลง

แต่สิ่งที่แสดงโดยเอ็นจิ้น Yii CMenu คือเมนูแบบเลื่อนลงสองเมนูที่วางซ้อนกันและทั้งสองถูกกระตุ้นด้วยปุ่มเดียวกัน เช่นนี้: ป้อนคำอธิบายรูปภาพที่นี่

เมื่อดูโค้ดที่แสดงผล ดูเหมือนว่าเมนูแบบเลื่อนลงทั้งสองเมนูได้รับการกำหนดคลาส "เมนูแบบเลื่อนลง" โดย CMenu (หรืออะไรก็ตามที่เปิดใช้งาน bootstrap lib) และเนื่องจากเมนูเหล่านั้นอยู่ในกลุ่มปุ่มเดียวกัน เมื่อ "เปิด" คลาสได้รับมอบหมาย โดยจะเปิดทั้งสองรายการแบบเลื่อนลงพร้อมกัน

ดังนั้นคำถามของฉันจึงง่าย เป็นไปได้ด้วยซ้ำโดยใช้อาร์เรย์เมนู CMenu เพื่อให้มีสองรายการแบบเลื่อนลงเหมือนกัน มีเมนู "ตัวเลือกรายการ" หรือ "ตัวเลือก HTML" ที่ฉันสามารถเพิ่มลงในคุณสมบัติของรายการเมนูที่จะอ้างอิงแท็ก css สองแท็กที่แตกต่างกันหรือไม่ ฉันรู้ว่าฉันต้องขาดอะไรบางอย่างไป

นี่คือวิธีการสร้างเมนูในมุมมอง

$this->menu = array_merge($this->menu, array(
      array(
          'label' => '<span class="hidden-xs hidden-sm">' . Yii::t('app', 'Export') . '</span>',
          'encodeLabel' => false,
          'htmlOptions' => array('id' => 'export-or-email-btn', 'class' => 'navbar-btn btn-sm',),
          'items' => array(
              array(
                  'label' => Yii::t('app', 'Export'),
                  'icon' => 'fa fa-file-excel-o',
                  'visible' => true,
                  'itemOptions' => array('class' => 'work-order-export-btn'),
              ),
              array(
                  'label' => Yii::t('app', 'Email Export'),
                  'icon' => 'fa fa-envelope-o',
                  'visible' => true,
                  'itemOptions' => array('id' => $model->getClassName(), 'class' => 'email-export-btn', 'data-grid-id' => 'work-order-grid'),
              ),
              array(
                  'label' => Yii::t('app', 'Export as Import Template'),
                  'icon' => 'fa fa-file-excel-o fa-lg',
                  'visible' => true,
                  'itemOptions' => array('class' => 'work-order-export-import-btn'),
              ),),),);

$this->menu = array_merge($this->menu, array(
    array(
        'label' => '<span class="hidden-xs hidden-sm">' . Yii::t('app', 'Actions') . '</span>',
        'encodeLabel' => false,
        'htmlOptions' => array(
            'id' => 'work-order-actions-btn work-order-actions',
            'class' => 'navbar-btn btn-sm',
            'style' => 'margin: 0 0 0 15px;',
        ),
        'items' => array(
            array(
                'icon' => 'fa fa-print fa-lg',
                'label' => Yii::t('app', 'Print to PDF'),
                'visible' => true,
                'itemOptions' => array(
                    'class' => 'work-order-print-pdf',
                ),),
            array(
                'icon' => 'fa fa-print fa-lg',
                'label' => Yii::t('app', 'Print'),
                'visible' => true,
                'itemOptions' => array(
                    'class' => 'work-order-print-selected',
                ),),))));

และนี่คือข้อมูลโค้ดที่แสดงผล:

<div class="btn-toolbar">
  <div class="operations btn-group-sm btn-group open">
    <button id="export-or-email-btn" class="navbar-btn btn-sm btn btn-primary dropdown-toggle" data-toggle="dropdown" name="yt7" type="button">
      <span class="hidden-xs hidden-sm">Export</span> 
      <span class="caret"></span>
    </button>
    <ul id="yw6" class="dropdown-menu">
      <li class="work-order-export-btn nav-header" data-ol-has-click-handler="">
        <a href="/th#"><i class="fa fa-file-excel-o"></i> Export</a>
      </li>
      <li id="WorkOrder" class="email-export-btn nav-header" data-grid-id="work-order-grid" data-ol-has-click-handler="">
        <a href="/th#"><i class="fa fa-envelope-o"></i> Email Export</a>
      </li>
      <li class="work-order-export-import-btn nav-header" data-ol-has-click-handler="">
        <a href="/th#"><i class="fa fa-file-excel-o fa-lg"></i> Export as Import Template</a>
      </li>
    </ul>
    <button id="work-order-actions-btn work-order-actions" class="navbar-btn btn-sm btn btn-primary dropdown-toggle" style="margin: 0 0 0 15px;" data-toggle="dropdown" name="yt8" type="button">
      <span class="hidden-xs hidden-sm">Actions</span> 
      <span class="caret"></span>
    </button>
    <ul id="yw7" class="dropdown-menu">
      <li class="work-order-print-pdf nav-header">
        <a href="/th#"><i class="fa fa-print fa-lg"></i> Print PDF</a>
      </li>
      <li class="work-order-print-selected nav-header">
        <a href="/th#"><i class="fa fa-print fa-lg"></i> Print Selected</a>
      </li>
    </ul>
  </div>
</div>

person UnKulMunki    schedule 24.01.2020    source แหล่งที่มา


คำตอบ (1)


ฉันคิดว่าปัญหาของคุณคือคุณกำลังรวมอาร์เรย์ทั้งสองเข้าด้วยกันในแอตทริบิวต์ $this->menu เดียวกัน

บางทีคุณควรใช้ CMenu เป็นวิดเจ็ตเหมือนในเอกสารประกอบ

$this->widget('zii.widgets.CMenu', array(
    'items'=>array(
        // Important: you need to specify url as 'controller/action',
        // not just as 'controller' even if default action is used.
        array('label'=>'Home', 'url'=>array('site/index')),
        // 'Products' menu item will be selected no matter which tag parameter value is since it's not specified.
        array('label'=>'Products', 'url'=>array('product/index'), 'items'=>array(
            array('label'=>'New Arrivals', 'url'=>array('product/new', 'tag'=>'new')),
            array('label'=>'Most Popular', 'url'=>array('product/index', 'tag'=>'popular')),
        )),
        array('label'=>'Login', 'url'=>array('site/login'), 'visible'=>Yii::app()->user->isGuest),
    ),
));

หากต้องการข้อมูลเพิ่มเติมและแอตทริบิวต์ โปรดดูเอกสารอย่างเป็นทางการที่นี่

person Hódos Gábor    schedule 27.01.2020
comment
ขอบคุณ นั่นคือสิ่งที่เกิดขึ้น - person UnKulMunki; 21.02.2020