2013-02-13 124 views
0

添加一个类的div之一,所以我装箱,一类如:如何在foreach循环

class CoreTheme_Form_Helpers_TabbedForm extends AisisCore_Form_Helpers_Content{ 

    protected $_html = ''; 

    public function init(){ 
     parent::init(); 

     if(isset($this->_options)){ 
      $this->_html .= '<ul class="nav nav-tabs">'; 
      foreach($this->_options as $options){ 
       $this->_html .= '<li><a href="#'.str_replace(" ", "", $options['tab']).'" data-toggle="tab"> 
       '.$options['tab'].'</a></li>'; 
      } 
      $this->_html .= '</ul>'; 

      $this->_html .= '<div class="tab-content">'; 
      foreach($this->_options as $options){ 
       $this->_html .= '<div class="tab-pane" id="'.str_replace(" ", "", $options['tab']).'">...</div>'; 
      } 
      $this->_html .= '</div>';   
     } 
    } 

    public function __toString(){ 
     return $this->_html; 
    } 
} 

我所希望做的是类主动添加到div与类标签-pane,但只有一次,只有到了第一个。

所以:

foreach($this->_options as $options){ 
    $this->_html .= '<div class="tab-pane" id="'.str_replace(" ", "", $options['tab']).'">...</div>'; 
} 

的HTML应该是这样的:

<div class="tab-pane active" id="something">...</div> 
<div class="tab-pane" id="something1">...</div> 
<div class="tab-pane" id="something2">...</div> 

想法?

回答

0
$active = " active"; 
foreach($this->_options as $options){ 

    $this->_html .= '<div class="tab-pane'. $active .'" id="'.str_replace(" ", "", $options['tab']).'">...</div>'; 
    $active = ""; 

} 

我认为它可以工作

1

只需使用一个变量来存储额外的类active和第一组后复位。

$extraClass = "active"; 
foreach($this->_options as $options){ 
    $this->_html .= '<div class="tab-pane '.$extraClass. '" id="'.str_replace(" ", "", $options['tab']).'">...</div>'; 
    $extraClass = ""; 
} 
1

这是一个jQuery的一行,如果你不介意从客户端添加它:

$('.tab-pane').first().addClass('active'); 
+0

我喜欢这个,因为它需要的关心它属于其中:在视图/显示。 – Sarel 2013-02-13 18:12:09

0

如果你需要一个计数器,为什么要用foreach?使用普通for

for ($i=0 ; $i < count($this->_options) ; $i++){ 

    $options = $this->_options[$i]; 

    if ($i==0) { 
     // do something else 
    }