0

我有一个带有数据的“Model_Product”和一个“statut”字段。我想在网格上显示我的数据并添加一个适应状态的操作按钮:

$grid->addcolumn(Button, /* function of the statut field*/ )

现在我有:

$grid->addcolumn(Button, 'Action1');
$grid->addcolumn(Button, 'Action2');
$grid->addcolumn(Button, 'Action3');
$grid->addcolumn(Button, 'Action4');
$grid->addcolumn(Button, 'Action5');

而只有 5 中的 1 可以触发“statut”字段的功能

4

2 回答 2

0

我想您可以简单地添加一个按钮并检查当您在服务器端收到“按钮单击”时需要执行哪个功能。那应该很容易。其他方法是在客户端使用 JavaScript 做一些事情,但这并不可靠,我认为这样的解决方案不会那么好和简单。

例如(未经测试):

$grid = $page->add('Grid');
$grid->setModel('Model_Product');

$b_name = 'details';
$b = $grid->addColumn('Button', $b_name);

if ($id = $_GET[$grid->name].'_'.$b_name) {
    $m = $this->add('Model_Product');
    $m->load($id);

    switch($m['status']) {
        case 1:
            // do something if status=1
            break;
        case 2:
            // do something if status=2
            break;
        case 3:
            // do something if status=3
            break;
    }

    // send some kind of javascript response
    $grid->js()->univ()->execute();
}
于 2013-06-22T23:01:40.103 回答
0

我使用的一个解决方案是为 Grid 添加格式类型:到 lib/Grid/advenced.php
我添加了一个智能按钮:

function init_smartButton($field){
    @$this->columns[$field]['thparam'].=' style="width: 40px; text-align: center"';
    $this->js(true)->find('.button_'.$field)->button();
}

function format_smartButton($field){
        $product = $this->add('Model_Product')->load($this->current_id);
        if($product->acceptButton($field))
        {
        $this->current_row_html[$field]='<button type="button" class="'.$this->columns[$field]['button_class'].'button_'.$field.'" '.
            'onclick="$(this).univ().ajaxec(\''.$this->api->url(null,
            array($field=>$this->current_id,$this->name.'_'.$field=>$this->current_id)).'\')">'.
                (isset($this->columns[$field]['icon'])?$this->columns[$field]['icon']:'').
                $this->columns[$field]['descr'].'</button>';
        }else{$this->current_row_html[$field]='';}
        $product->destroy();
    }

它就像一个普通按钮,但只有在我的产品允许时才会创建按钮。

然后在我的网格中:

$grid->setModel('Model_Product')->addCondition('buyer_id','=',$userID); 
$grid->addColumn('smartButton' ,'1');
$grid->addColumn('smartButton' ,'2');
$grid->addColumn('smartButton' ,'3');
$grid->addColumn('smartButton' ,'4');
$grid->addColumn('smartButton' ,'5');
$grid->addPaginator(5);

它并不完美,但现在它会好的!如果您有更好的建议,我会很乐意改进它。

于 2013-07-11T08:14:06.597 回答