私は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,
]);
}