【发布时间】:2012-06-06 05:27:24
【问题描述】:
这是一个最佳实践问题,而不是具体问题。 我对 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));?>
感谢大家的回复
【问题讨论】:
-
就您的问题而言,它可能会被关闭。也许发布一个具体的例子?
-
你已经在使用 Yii .. 它本身就将最佳实践抛诸脑后
-
@tereško 请解释一下您的意思,yii 没有使用最佳实践?您建议改用哪个框架?我一直在看 Symfony,并且确实喜欢大量的文档等,但 yii 在大多数情况下都非常容易使用......
-
@SeventySix ,当然 ... 使用全局状态,使用
eval(),使用紧密耦合,使用@进行错误抑制,深度继承层次结构,不明确的接口,计算__construct()方法,静态工厂方法的使用..等等 -
@teresko,这超出了我目前的理解......你有没有可以推荐的更好实践的框架?
标签: php model-view-controller yii