Compartilhando - Como fazer uma tab ficar ativa no carregamento da página

Olá, brazucas!

Eu cansei de procurar nesse fórum, mas não encontrei nada sobre ativar uma tab específica quando carregar a página. Tem uma extensão que não consegui fazer funcionar e as jQuery tabs da Jui, mas nada muito prático.

Fuçando um pouco mais, consegui fazer isso modificando um pouco a dica do CClipWidget:

<?php $this->beginWidget('system.web.widgets.CClipWidget', array('id'=>'Tab1'));  $ativarTab='tab3'; ?>

Conteúdo da Tab1 aqui

<?php $this->endWidget(); ?>

<?php $this->beginWidget('system.web.widgets.CClipWidget', array('id'=>'Tab2')); ?>

Conteúdo da Tab 2

<?php $this->endWidget(); ?>

<?php $this->beginWidget('system.web.widgets.CClipWidget', array('id'=>'My tab 3')); ?>

    Conteúdo da tab 3 …

<?php $this->endWidget(); ?>

<?php

$tabParameters = array();

foreach($this->clips as $key=>$clip)

    $tabParameters['tab'.(count($tabParameters)+1)] = array('title'=>$key, 'content'=>$clip, 'id'=>'tab'.(count($tabParameters)+1));

?>

<?php $this->widget('system.web.widgets.CTabView', array('tabs'=>$tabParameters,'activeTab'=>$activeTab)); ?>

O segredo está aqui, atribuir o ID para as tabs dinamicamente

$tabParameters = array();

foreach($this->clips as $key=>$clip)

    $tabParameters['tab'.(count($tabParameters)+1)] = array('title'=>$key, 'content'=>$clip, 'id'=>'tab'.(count($tabParameters)+1));

E depois passar o ID da tab a ser ativada por uma variável como abaixo:

<?php $this->widget('system.web.widgets.CTabView', array('tabs'=>$tabParameters,'activeTab'=>$ativarTab)); ?>

Óbvio que a variável $ativarTab deve ser passada de alguma forma e não setada no início do script como eu fiz no exemplo…mas isto já é um começo…

Se alguém tiver uma solução mais elegante, por favor, compartilhe aqui para que possamos dar uma solução definitiva para este problema que, tenho certeza de que muitos iniciantes na framework como eu vão enfrentar…

Abraços!!!

Interessante. Já tinha visto o problema com os tabs, mas, como nao tive necessidade, nao tinha ido atrás.

Valeu!

Eu fiz de uma forma não conveniente. Como possuo um conjunto de tabs que separam formulários, determino qual tab será habilitada de acordo com meus parâmetros de post.

Implementei uma condicional na view que simula um evento de click e atribui o valor ao elemento html.

Gostaria de saber como fazer uma aba dentro de uma outra aba… alguem tem alguma ideia?

Obrigado por compartilhar!