2017-10-29 19 views
-1

私はgridviewのモデルからデータを呼び出すつもりでした。私は作曲家経由で高度なグリッドビューをインストールし、\ yiister \ grid \ widgets \ ProgressColumnを使用しています。 prolem ProgressColumnウィジェットはint型の値としてyii2 gridview Closureクラスのオブジェクトをintに変換できませんでした

'value'=>function($model){ 
     $model->paxtashart; 
    }, 

を取っていないが、それは私にエラーを与える:クラス閉鎖のオブジェクトが

をintに変換することができませんでした、私はそれを変換することができます任意のpossiblityがありますintまたはその他の代替手段?ここ

私はあなたに私の全体のコードを提示してみましょう:

$model->paxtashart 

が、それはすべての属性のために私に1つの値を与えるjsut、それは

を支援されていないされています。私はこの方法を試してみました
[ 


    'class' => \yiister\grid\widgets\ProgressColumn::className(), 
    'attribute' => 'paxta_given', 
    'size' => \yiister\grid\widgets\ProgressColumn::SIZE_LARGE, 
    'isAnimated' => true, 
    'value'=>function($model){ 
     $model->paxtashart; 
    }, 

    // 'maxValue'=> $fermercha->paxtashart, 
    // 'minValue'=> $fermercha->paxta_given, 
    'progressBarClass' => function ($model, $column) { 
     return $model->{$column->attribute} > 60 
      ? \yiister\grid\widgets\ProgressColumn::STYLE_SUCCESS 
      : \yiister\grid\widgets\ProgressColumn::STYLE_WARNING; 
    }, 
], 

私のモデルは次のようになります。

<?php 

namespace app\models; 

use Yii; 

/** 
* This is the model class for table "fermer". 
* 
* @property integer $id 
* @property string $FIO 
* @property integer $tuman_id 
* @property string $Massiv 
* @property integer $ferhojalik 
* @property integer $maydoni 
* @property integer $paxtamay 
* @property integer $paxtashart 
* @property integer $gallamay 
* @property integer $gallashart 
* @property integer $bog 
* @property integer $uzum 
* @property integer $poliz 
* @property integer $sabzavot 
* @property integer $chorva 
*/ 
class Fermer extends \yii\db\ActiveRecord 
{ 
    /** 
    * @inheritdoc 
    */ 
    public static function tableName() 
    { 
     return 'fermer'; 
    } 

    /** 
    * @inheritdoc 
    */ 
    public function rules() 
    { 
     return [ 

      [['tuman_id', 'ferhojalik', 'maydoni', 'paxtamay', 'paxtashart', 'gallamay', 'gallashart', 'paxta_given', 'poliz', 'sabzavot', 'chorva','paxta_done'], 'integer'], 
      [['FIO', 'Massiv'], 'string', 'max' => 255], 
      [['image'], 'file', 'extensions' => ['png','jpg','jpeg']], 

     ]; 
    } 

    public function upload() 
    { 
     if ($this->validate() and $this->image->baseName) { 
      $this->image->saveAs(Yii::$app->basePath.'/web/uploads/' . $this->image->baseName . '.' . $this->image->extension); 
      return true; 
     } else { 
      return false; 
     } 
    } 
    /** 
    * @inheritdoc 
    */ 
    public function attributeLabels() 
    { 
     return [ 
      'id' => 'ID', 
      'FIO' => 'ФИО', 
      'tuman_id' => 'Туман номи', 
      'Massiv' => 'Массив номи', 
      'ferhojalik' => 'Фермер хўжалиги номи', 
      'maydoni' => 'Майдони', 
      'paxtamay' => 'Пахта майдони', 
      'paxtashart' => 'Пахта майдони шартнома режаси (тонна)', 
      'gallamay' => 'Ғалла майдони', 
      'gallashart' => 'Ғалла майдони шартнома режаси (тонна)', 
      'paxta_given' => 'Пахта шартнома бўйича топширилган тонна', 
      'image' => 'Расм', 
      'poliz' => 'Полизчилик', 
      'sabzavot' => 'Сабзавотчилик', 
      'chorva' => 'Чорвачилик', 
     ]; 
    } 
     // return $this->hasone(Extraagri::className(), ['id' => 'po_item_no']); 

public function getDone() 
{ 
    return $this->hasone(done::classname(),['id'=>'paxta_done']); 
} 

/*  public function getPoitem() 
    { 
     return $this->hasMany(Poitem::className(), ['id' => 'po_item_no']); 
    }*/ 

/* public function getExtraagri() 
    { 
     return $this->hasMany(Extraagri::className(), ['id' => 'id']); 
    } 
*/ 


} 
+0

「return $ model-> paxtashart'」のように前に戻り値を追加するとどうなりますか? –

+0

私はリターンを追加しましたが、それでもエラーが表示されます:クラスClosureのオブジェクトをintに変換できませんでした –

+0

あらかじめ変数にクロージャを割り当ててみてください。 '$ paxtashart = function($ model){ のようにreturn $ model-> paxtashart; } '。次に、 'value =>(int)$ paxtashart()'のように呼び出します。ところで、 '$ model'とは何ですか?ここにコードを追加できますか? –

答えて

1

匿名関数は、クラスクロージャのインスタンスです。次のバリエーションを試してみてください

//assign the closure to variable 
    $value = function($model){ 
      return $model->paxtashart; 
     } 
    $progressBarClass = function ($model, $column) { 
      return $model->{$column->attribute} > 60 
       ? \yiister\grid\widgets\ProgressColumn::STYLE_SUCCESS 
       : \yiister\grid\widgets\ProgressColumn::STYLE_WARNING; 
     } 
    [ 
     'class' => \yiister\grid\widgets\ProgressColumn::className(), 
     'attribute' => 'paxta_given', 
     'size' => \yiister\grid\widgets\ProgressColumn::SIZE_LARGE, 
     'isAnimated' => true, 
     'value'=>(int)$value($model), //invoke the closure and cast as integer 
     'progressBarClass' =>(string)$progressBarClass($model, $column), //invoke the closure and cast as string 
    ], 
+0

仲間に感謝、それは私にこのエラーを示した:未定義の変数:モデル –

+0

それはどこにエラーを示しますか?どの線? –

+0

この行のbro - > 'value' =>(int)$ value($ model) –

関連する問題