我有一个带有数据和“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”字段的三角函数
答案 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);
这不完美,但现在一切都会好的! 如果您有更好的建议,我会很乐意改进它。