这是一个最佳实践问题,而不是特定问题。我对 MVC 方法和 Yii 相当陌生,并且已经在应用程序上开发了一段时间。我一直在讨论最佳实践以及将什么放入哪个文件(控制器、模型、视图、助手等),但是我还没有找到任何具体的示例。
我目前有这样的电话:Model::function()
在我的视图文件中以及像这样的检查$var = app()->request->getParam(value, false);
我在我的控制器文件中有调用,例如 Model::function() 和 Model::model()->scope1()->scope2()->findAll() 我也认为我的控制器文件有点厚,但不是确定如何以及在何处放置一些臃肿,我一直在阅读有关 DRY 的内容,我认为可以说我并没有完全干燥我的代码。你能否给我一个更清晰的图片,让我更清楚地了解去哪里,以及建议或原因:) 感谢任何建议,在此先感谢。
这是视图文件中的示例调用
<?php
$this->pageTitle = 'Edit Action';
$this->subTitle = '<i>for</i> <b>' . Vendors::getName($_GET['vendor']) . '</b>';
?>
<div class="wrapper">
<?php echo $this->renderPartial('_form', array('model' => $model)); ?>
</div>
getName 是我在模型中的函数,这是在视图中调用函数的好方法吗?
另一个示例视图文件:
<div class="wrapper">
<?php
if($this->action->id != 'create') {
$this->pageTitle = "New Media Contact";
echo $this->renderPartial('_form', array('model'=>$model));
} else {
$this->pageTitle = "New Vendor";
echo $this->renderPartial('_form', array('model'=>$model));
}
?>
</div>
$model 在控制器中设置了类型......同样的问题......可以这样做......更清洁......?在 MVC 和可重用性/DRY 方面更好?
编辑 在阅读了这里的一些回复之后,尤其是。@Simone 我重构了我的代码,并想分享它现在的样子......
public function actionCreate() {
$model = new Vendors;
// Get and Set request params
$model->type = app()->request->getParam('type', Vendors::VENDOR_TYPE);
$vendorsForm = app()->request->getPost('Vendors', false);
// Uncomment the following line if AJAX validation is needed
$this->performAjaxValidation($model);
if ($vendorsForm) {
$model->attributes = $vendorsForm;
if ($model->save())
$this->redirect(array('/crm/vendors', array('type' => $model->type)));
}
$model->categories = Categories::getAllParents($model->type);
$this->pageTitle = 'New ' . Lookup::item('VendorType', $model->type);
$this->render('create', array(
'model' => $model,
));
}
和视图 create.php
<div class="wrapper">
<?php echo $this->renderPartial('_form', array('model'=>$model));?>
感谢所有回复