Ich mache eine Anwendung mit Yii2 Framework und ich bin mir nicht sicher, ob ich alles richtig mache. Hierist es korrekt nach OOP und MVC Prinzipien (PHP)?
ist eine Aktion von meinem Controller:
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,
]);
}
Und hier ist meine Ansicht Code:
<div class="date-update">
Last update: <?= date(Yii::$app->params['dateFormat'], $model->updated_at) ?>
</div>
<?= $this->render($gallery, [
'pictures' => $pictures,
'model' => $model,
'upload' => $upload,
]) ?>
Ist es richtig
$pictures = new Pictures();
und
$upload = new UploadForm();
zu erstellen
im Controller und um sie für zwei Mal in die Ansichtsdatei zu übertragen, wo ich sie verwende oder ich sollte sie besser direkt in der Ansichtsdatei erstellen? Was wird nach OOP und MVC Prinzipien richtig sein?
Dies ist eine Frage für [code review] (http://codereview.stackexchange.com) .. – dbf