2017-10-06 11 views
0

管理者が従業員(教師)を作成し、教師が生徒を作成できるコラージュプロジェクトに取り組んでいます。最近追加された学生のリストYII2ユーザーIDに基づいてビューファイルにデータを表示

ビュー/インデックスファイルに条件を入れて、特定の先生が自分で作成した生徒のリストを表示できるようにしたい。

私はユーザテーブルとEmployeeテーブル間のリンク(によって更新&によって作成された)

よろしく、 ユブラージバーマ

<section class="content doc-user-profile"> 
    <div class="col-md-12 text-center"> 
    </div> 
    </div> 
    <table class="table table-striped"> 
     <tr> 
      <th><?= $info->getAttributeLabel('stu_unique_id') ?></th> 
      <td><?= Html::encode($info->stu_unique_id) ?></td> 
     </tr> 
     <tr> 
      <th><?php echo Yii::t('stu', 'Name'); ?></th> 
      <td><?= Html::encode($this->title) ?></td> 
     </tr> 

     <tr> 
      <th><?= $info->getAttributeLabel('stu_email_id') ?></th> 
      <td><?= Html::encode($info->stu_email_id) ?></td> 
     </tr> 
     <tr> 
      <th><?= $info->getAttributeLabel('stu_mobile_no') ?></th> 
      <td><?= $info->stu_mobile_no ?></td> 
     </tr> 
     <tr> 
      <th><?php echo Yii::t('stu', 'Status'); ?></th> 
      <td> 
       <?php if($model->is_status==0) : ?> 
       <span class="label label-success"><?php echo Yii::t('stu', 'Active'); ?></span> 
       <?php else : ?> 
       <span class="label label-danger"><?php echo Yii::t('stu', 'InActive'); ?></span> 
       <?php endif; ?> 
      </td> 
     </tr> 
    </table> 
</div> 

<div class="col-lg-9 profile-data"> 
    <ul class="nav nav-tabs responsive" id = "profileTab"> 
     <li class="active" id = "personal-tab"><a href="#personal" data-toggle="tab"><i class="fa fa-street-view"></i> <?php echo Yii::t('stu', 'Personal'); ?></a></li> 
    </ul> 
    <div id='content' class="tab-content responsive"> 
     <div class="tab-pane active" id="personal"> 
      <?= $this->render('_tab_stu_personal', ['info' => $info, 'model' => $model]) ?> 
     </div> 
    </div> 
</div> 
</div> <!---End Row Div---> 

学生は、コントローラを作成しますが、以下のようである持っている:

public function actionCreate() 
{ 
    $model = new StuMaster(); 
    $info = new StuInfo(); 
    $user =new User(); 
    $auth_assign = new AuthAssignment(); 

    if (Yii::$app->request->isAjax) { 
     if($info->load(Yii::$app->request->post())) { 
      \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
      return ActiveForm::validate($info); 
     } 
     if($model->load(Yii::$app->request->post())) { 
      \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
      return ActiveForm::validate($model); 
     } 
    } 

    $stud_uniq_no = \app\modules\student\models\StuInfo::find()->max('stu_unique_id'); 
    $uniq_id = NULL; 
    if(empty($stud_uniq_no)) { 
     $uniq_id = $info->stu_unique_id = 1; 
    } 
    else { 
     $chk_id = StuInfo::find()->where(['stu_unique_id' => $stud_uniq_no])->exists(); 
     if($chk_id) 
      $uniq_id = $stud_uniq_no + 1; 
     else 
      $uniq_id = $stud_uniq_no; 
    } 

    if ($model->load(Yii::$app->request->post()) && $info->load(Yii::$app->request->post())) 

    { 

     if (Yii::$app->request->isAjax) { 
        \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
        return ActiveForm::validate($info); 
     } 
     if (Yii::$app->request->isAjax) { 
        \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
        return ActiveForm::validate($model); 
     } 

     $model->attributes = $_POST['StuMaster']; 
     $info->attributes = $_POST['StuInfo']; 

     $info->stu_dob = Yii::$app->dateformatter->getDateFormat($_POST['StuInfo']['stu_dob']); 
     if(empty($_POST['StuInfo']['stu_email_id'])) 
     $info->stu_email_id = NULL; 
     else 
     $info->stu_email_id = strtolower($_POST['StuInfo']['stu_email_id']); 

     $login_id = \app\models\Organization::find()->one()->org_stu_prefix.$uniq_id; 
     $user->user_login_id = $login_id; 
     $user->user_password = md5($user->user_login_id.$user->user_login_id); 
     $user->user_type = "S"; 
     $user->created_by = Yii::$app->getid->getId(); 
     $user->created_at = new \yii\db\Expression('NOW()'); 

     if($info->save(false)) 
     { 
     $user->save(false); 
     } 


     $model->stu_master_stu_info_id = $info->stu_info_id; 
     $model->stu_master_user_id = $user->user_id; 
     $model->created_by = Yii::$app->getid->getId(); 
     $model->created_at = new \yii\db\Expression('NOW()'); 
     $model->save(false); 

     $s_info = StuInfo::findOne($model->stu_master_stu_info_id); 
     $s_info->stu_info_stu_master_id = $model->stu_master_id; 
     $s_info->save(false); 

     $auth_assign->item_name = 'Student'; 
     $auth_assign->user_id = $user->user_id; 
     $auth_assign->created_at = date_format(date_create(),'U'); 
     $auth_assign->save(false); 

     if ($model->save()) { 
     return $this->redirect(['view', 'id'=>$model->stu_master_id]); 
     } 
     else 
     return $this->render('create', ['model' => $model, 'info' => $info, 'uniq_id'=>$uniq_id]); 
    } else { 
     return $this->render('create', [ 
     'model' => $model, 'info' => $info, 'uniq_id'=>$uniq_id 
     ]); 
    } 
} 

答えて

0

あなたのレコードが前にレンダリングログインしているユーザーによって作成された場合は、チェックすることができ、あなたのビュー(actionView)について

public function search($params) 
{ 
    $query = StuInfo::find(); 
    ... 
    $query->andFilterWhere(['created_by' => Yii::$app->user->identity->id]); 
    .... 
} 

:「modelSearch」の検索機能はCREATED_BYフィルタを追加します。

これはので、私は許可を使用することをお勧め時間とともに複雑になるだろう - Yii2 Access Control and Authorization

0

は、あなたのアクションを作成okです。 あなたがあなたのindexアクションは、この場合でログインしている教師が唯一の彼/学生

を見ることができます。この

public function actionIndex() 
    { 

     $searchModel = new StudentSearch(); 
     $query = Student::find()->where(['teacher_id'=>$logged_teacher_id_from_session]); 

     $dataProvider = new ActiveDataProvider([ 
      'query' => $query, 
      'pagination' => [ 
       'pageSize' => 20, 
      ], 
      'sort' => [ 
       'defaultOrder' => [ 
        'student_id' => SORT_ASC, 
       ] 
      ], 
     ]); 

     return $this->render('index', [ 

      'searchModel' => $searchModel, 
      'dataProvider' => $dataProvider, 
     ]); 
    } 

ようにする必要があり あなたのコントローラのインデックス/ビューのアクションに制限を配置する必要があります

関連する問題