2016-12-28 10 views
1

私は2つのテーブル 'employee'と 'employee_payrecords'を持っています。Yii2関連モデルのグリッドビューから単一のレコードを表示する方法

従業員モデルに基づいた「ダッシュボード」というビューがあります。従業員はemployee_payrecords(n:m)に関連しています。ダッシュボードには、すべてのペイコロを表示するグリッドビューウィジェットがあります。私はpayrecordの 'view'(Gridviewウィジェットのactionカラム)をクリックし、新しいウィンドウ(1 payrecord)にpayrecordを表示することができます。現在、私はPayrecordの 'view'アクションにカーソルを合わせると、ブラウザの下部プレビューバーに正しいPay IDのIDが表示されますが、 'view'アクションアイテムをクリックすると 'Not Found'エラーが表示されます。私は単に自分のビューにペイコムを表示したいだけです。私は何が欠けていますか? EmployeeControllerで

、Iは、(従業員モデルを介して関連している)EmployeePayrecordモデルから給料を表示する作用を有する。

public function actionViewPaycheck($id) 
{ 
    $model = EmployeePayrecord::findOne($id); 

    return $this->render('viewPaycheck', [ 
     'model' => $model, 
    ]); 
} 

従業員モデル Iにおいて盗んする方法を有します( 'ダッシュボード' ビューでGridViewのための)すべてのpayrecords: 'ダッシュボード' ビューで

public function getEmployeePayrecords() 
{ 
    return $this->hasMany(\frontend\models\EmployeePayrecord::className(), ['employee_id' => 'id']); 
} 

と私は以前に述べた正しいURLと思ったものを作成しましたが、ブラウザーのリンクのプレビューで(ビューのアクションボタンをクリックする前に)ペイコードの正しいレコード番号が表示されます。 URLはpayrecordを表示するために、何を参照するかであるビュー・給料ビュー(viewPaycheck.php)がある:あなたが1でこれを使用しているので

public function actionDashboard($id) 
{ 
    /** 
    * Use the employee layout for 'dashboard' 
    */ 
    $this->layout = 'employee'; 

    $model = $this->findModel($id); 

    $providerEmployeePayrecords = new \yii\data\ArrayDataProvider([ 
     'allModels' => $model->employeePayrecords, 
     'pagination' => [ 
      'pageSize' => 5, 
     ] 
    ]); 

    return $this->render('dashboard', [ 
     'model' => $model, 
     'providerEmployeePayrecords' => $providerEmployeePayrecords, 

    ]); 
} 

答えて

関連する問題