2016-07-04 8 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(); 
을 만드는 것입니다 여기에

내 컨트롤러에서 작업이다

을 컨트롤러에 넣고 뷰 파일에 두 번 전송하면 내가 사용하거나보기 파일에서 올바르게 생성해야합니다. OOP 및 MVC 원칙에 따라 올바른 내용은 무엇입니까?

+4

[코드 검토] (http://codereview.stackexchange.com)에 대한 질문입니다. – dbf

답변

0

왜 뷰 파일에 생성하려고합니까?

MVC 논리는보기 파일에있는 것만 표시합니다. 보기에서 다른 것을하지 않아야합니다.

그림 개체와 상호 작용해야하는 경우보기에서 개체를 만드는 경우 어떻게해야합니까?