2016-07-04 10 views
2

私はYii2フレームワークを使用してアプリケーションを作成しています。ここでOOPとMVCプリンシパル(PHP)によると正しいですか?

は私のコントローラからのアクションです:

public function actionView($id) 
{ 
    $model = $this->findModel($id); 
    $pictures = new Pictures(); 
    $upload = new UploadForm(); 
    $views = new Views(); 

    $contacts = $model->getContacts($model->user_id); 
    $contact = $model->contact($model->user_id); 

    $buttons = [ 
     'update' => '', 
     'delete' => '', 
    ]; 

    $gallery = '_gallery'; 
    $value = ''; 

    if (!Yii::$app->user->isGuest) { 
     $isInBookmarks = Bookmark::find()->where([ 
      'user_id' => Yii::$app->user->identity->getId(), 'advert_id' => $id 
     ])->all(); 

     if (!empty($isInBookmarks)) { 
      $value = 'Delete ' . 'from bookmarks'; 
     } else { 
      $value = 'Add to bookmarks'; 
     } 

     if ($model->user_id == Yii::$app->user->identity->getId()) { 
      $buttons['update'] = Html::a('Update advert', ['update', 'id' => $model->id], [ 
       'class' => 'btn btn-primary' 
      ]); 
      $buttons['delete'] = Html::a('Delete advert', ['delete', 'id' => $model->id], [ 
       'class' => 'btn btn-danger', 
       'data' => [ 
        'confirm' => 'Are you sure you want to delete this advert?', 
        'method' => 'post', 
       ], 
      ]); 

      if (isset($_POST['delete_pic'])) { 
       $model->deletePic(); 
      } 

      $gallery = '_my-gallery'; 
     } 
    } 

    $views->countViews($_GET['id']); 

    return $this->render('view', [ 
     'model' => $model, 
     'contacts' =>$contacts, 
     'contact' =>$contact, 
     'value' => $value, 
     'buttons' => $buttons, 
     'pictures' => $pictures, 
     'gallery' => $gallery, 
     'upload' => $upload, 
     'views' => $views, 
    ]); 
} 

そしてここでは、私の見解コードです:

<div class="date-update"> 
    Last update: <?= date(Yii::$app->params['dateFormat'], $model->updated_at) ?> 
</div> 

<?= $this->render($gallery, [ 
    'pictures' => $pictures, 
    'model' => $model, 
    'upload' => $upload, 
]) ?> 

はそれが

$pictures = new Pictures(); 

$upload = new UploadForm(); 
を作成するために正しいです

をコントローラで使用し、それらを2回ビューファイルに送信すると、それらを使用するか、ビューファイルに正しく作成する必要がありますか? OOPとMVCプリンシパルによれば、何が正しいでしょうか?

+4

[コードレビュー](http://codereview.stackexchange.com)の質問です。 – dbf

答えて

0

なぜそれらをビューファイルで作成しますか?

MVCロジックは、ビューファイル内のものだけを表示することです。あなたはビューで他のことを決して行うべきではありません。

ピクチャオブジェクトと対話する必要がある場合は、ビューでオブジェクトを作成するとどうしますか?

関連する問題