2012-11-02 34 views
0

我是Yii的初學者,並試圖理解CGridView小部件。CGridView和CButtonColumn的使用(Yii Framework)

首先我理解所有這些代碼:

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider, 
    'columns'=>array(
     "url", 
     "allowRedirect", 
     array(
      "name"=>"Kod", 
      "value"=>array($model, "returnHTTPCode"), 
      "type"=>"html" 
      ), 
     array(
      "class"=>"CButtonColumn", 
      "template"=>"{update} {delete}", 
      ), 

     ), 
)); 

現在我想改變刪除按鈕的網址http://domain.com/?r=pano/deleteSiteIn documentation,有deleteButtonUrl財產,我嘗試使用它

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider, 
    'columns'=>array(
     "url", 
     "allowRedirect", 
     array(
      "name"=>"Kod", 
      "value"=>array($model, "returnHTTPCode"), 
      "type"=>"html" 
      ), 
     array(
      "class"=>"CButtonColumn", 
      "template"=>"{update} {delete}", 
      "deleteButtonUrl"=>"deleteSite"    
      ), 

     ), 
)); 

但我得到Use of undefined constant deleteSite - assumed 'deleteSite'錯誤。

然後我試着用CButtonColumn的buttons屬性。

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider, 
    'columns'=>array(
     "url", 
     "allowRedirect", 
     array(
      "name"=>"Kod", 
      "value"=>array($model, "returnHTTPCode"), 
      "type"=>"html" 
      ), 
     array(
      "class"=>"CButtonColumn", 
      "template"=>"{update} {delete}", 
      "buttons"=>array(
       "delete"=>array(
          "url"=>"http://localhost/sitelerimacikmi/index.php?r=panos" 
          ) 
       ), 

      ), 

     ), 
)); 

並得到相同的錯誤。

如何使用CButtonColumn的屬性?

注意,英語不是我的母語,所以請儘量使用簡單的語法。

+0

OK,我只是解決問題與使用' 「deleteButtonUrl」=> 「 'R =全景/ deleteSite?'」',而不是' 「deleteButtonUrl」=>「全景圖/ deleteSite 「'。但仍需要明確的答案供參考。 – Eray

回答

0

$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider, 
'columns'=>array(
    "url", 
    "allowRedirect", 
    array(
     "name"=>"Kod", 
     "value"=>array($model, "returnHTTPCode"), 
     "type"=>"html" 
     ), 
    array(
     "class"=>"CButtonColumn", 
     "template"=>"{update} {delete}", 
     "deleteButtonUrl" => "Yii::app()->createUrl('pano/deleteSite')" // <- changes here 
     ), 

    ), 
)); 

此外,您還可以閱讀這篇文章。下面是如何在CButtonColumn類中刪除URL定義的默認值,

public $deleteButtonUrl = 'Yii::app()->controller->createUrl(
    "delete",array("id"=>$data->primaryKey) 
)'; 

此URL是使用PHP eval函數evaluted,在此表達$data是當前模型被渲染。

你應該使用:

$this->widget('zii.widgets.grid.CGridView', array(
    ... 
    'columns'=>array(
     ... 
     array(
      'class'=>'CButtonColumn', 
      'deleteButtonUrl' => 'Yii::app()->controller->createUrl(
       "pano/deleteSite", array("id" => $data->primaryKey) 
      )', 
     ), 
    ), 
);