Pasted code actually used in production with some further 'fiddles'

Used in view as:
<?php
$this->widget('ext.tabularinput.XTabularInput',
        array(
                'models'=>$this->models,
                'actionPrefix'=>$this->actionPrefix,
                'containerTagName'=>'table',
                //'headerTagName'=>'thead',
                //'header'=>'',
                'inputContainerTagName'=>'tbody',
                'inputTagName'=>'tr',
                'inputView'=>'_period',
                'inputUrl'=>Yii::app()->controller->createUrl('request/addTabularInputs'),
                'removeTemplate'=>'<td>{link}</td>',
                'removeLabel'=>Yii::t('app','lb.weeklydelete'),
                'removeHtmlOptions'=>array('class'=>'weekly-delete'),
                //'removeUrl'=>Yii::app()->controller->createUrl('request/removeTabularInputs'),
                'addTemplate'=>'<tbody><tr><td colspan="6"></td><td>{link}</td></tr></tbody>',
                'addHtmlOptions'=>array('class'=>'weekly-add'),
                //'addTemplate'=>'<div class="action">{link}</div>',                
                //'addTemplate'=>'<tbody><tr><td colspan="3">{link}</td></tr></tbody>',
                'addLabel'=>Yii::t('app','Add new weekly row'),
                //'addHtmlOptions'=>array('class'=>'weeky-new-line'),
                )
        );

This view belongs to a widget, which sets up action like:
      Yii::import('ext.tabularinput.XTabularInput');
Yii::import('application.components.WeeklyWidget.*');
/**
 * Provides widget to define and show weekly planning.
 */
class WeeklyWidget extends CWidget implements IAction {
    
    /*
     * Provide action interface for this widget in order
     * to maintain a consistency in the view path
     * for XTabularInput.
     */
    /**
     * Constructor when seen as action
     * 
     * @param unknown_type $controller
     * @param unknown_type $id
     */
    public function __construct($controller,$id=null) {
        parent::__construct($controller);
        if($id!==null) {
            $this->setId($id);  // In action context, id is provided.
        }
    }  
    public function runWithParams($params) {
        if(empty($this->models)) {
            $this->models=array(new WeeklyModel());
        }
        $this->render($this->view);
    }

    /**
     * Define the actions that this widget provides.
     */
    public static function actions() {
    	return array(
    			'getinput'=>'WeeklyWidget',
    	);
    }
    /**
     * (non-PHPdoc)
     * @see CWidget::run()
     */
    public function run() {
        $this->render($this->view); /* This is the view mentionned above */
    }
/*...*/
}

And the controller refers to the widget using the tabular widget:
    public function actions() {
        return array(
                "weekly."=>"application.components.WeeklyWidget.WeeklyWidget",
        );
    }