使用敏捷工具包向我的网格添加条件按钮

时间:2013-06-22 20:16:30

标签: php frameworks atk4

我有一个带有数据和“statut”字段的“Model_Product”。 我想在网格上显示我的数据,添加一个适合法规的动作按钮:

$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”字段的三角函数

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分: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);

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