2017-08-01 11 views
0

ビュー/ search.phpYii2 - 関係

<?php foreach($dataProvider->getModels() as $call){ ?> 
<tbody> 
<tr> 
    <td><?=$call->created?></td> 
    <td><?=$call->call_datetime?></td> 
    <td><?=$call->call_from?></td> 
    <td><?=$call->call_to?></td> 
    <td><?=$call->duration?></td> 
    <td><?=$call->call_type?></td> 
    <td><?=$call->extension?></td> 
    <td><?=$call->callRecFiles->fname?></td> 
</tr> 
</tbody> 
<?php } ?> 

関係モデルで/ Call.php

public function getCallRecFiles() 
{ 
    return $this->hasOne(CallRecording::className(), ['callref' => 'callref']); 
} 

コントローラactionSearch

public function actionSearch($id) 
{ 
    $cust = new Customer(); 
    Yii::$app->user->identity->getId(); 
    $dataProvider = new ActiveDataProvider([ 
     'query' => Call::find() 
      ->with('customer', 'callRecFiles') // eager loading relations 'customer' & 'callRecFiles' 
      ->where(['custref' => $id]) 
      ->limit(10), 
     'pagination' => false, // defaults to true | when true '->limit()' is automatically handled 
    ]); 
    return $this->render('search',[ 
     'dataProvider' => $dataProvider, 
     'cust' => $cust, 
    ]); 
} 

で非オブジェクトのプロパティを取得しようとすると、ここで間違っているのは何ですか?私は他の同様の質問を閲覧しましたが、すべてがウィジェットやファイル入力を伴うようです。どんな助けもありがとうございます。

+0

エラーは何ですか? –

+0

非オブジェクトのプロパティを取得しようとしています – Kyle

+0

どのモデル - >フィールドにこのエラーがありますか? – scaisEdge

答えて

0

エラーTrying to get property of non-objectには2つの場所があります。

最初にここにある:

<td><?= $call->callRecFiles ? $call->callRecFiles->fname : null ?></td> 

第二はここにある:

Yii::$app->user->identity->getId(); 

にはアクセスcontrollルールはありません場合は

<td><?=$call->callRecFiles->fname?></td> 

それを回避するには、ifステートメントを使用する必要がありますあなたのコントローラー、未ログインのユーザーはこのアクションと検索方法にアクセスすることができますユーザーのidentity彼がログインするまでそれを避けるために、あなたはあなたのコントローラにbehaviorsを追加する必要があります。

/** 
* @inheritdoc 
*/ 
public function behaviors() 
{ 
    return [ 
     'access' => [ 
      'class' => AccessControl::class, 
      'rules' => [ 
       [ 
        'allow'   => true, 
        'roles'   => ['@'], 
       ], 
      ], 
     ], 
    ]; 
} 

それは、このコントローラにあなたの行動にアクセスする前にログインするユーザーが必要になります。

ところで、あなたはすべてこのコードでは使用されません。

Yii::$app->user->identity->getId(); 

だから、それはまた、溶液で取り除きます。

+0

@Yupik非常に詳細な回答ありがとうございます。質問に入れるのを忘れましたが、エラーは'​​ callRecFiles-> fname?> ' – Kyle

関連する問題