これはベスト プラクティスの質問であり、特定の問題ではありません。私は MVC アプローチと Yii にはかなり慣れていませんが、しばらくの間アプリで開発を行ってきました。ベスト プラクティスと、どのファイル (コントローラー、モデル、ビュー、ヘルパーなど) に何を入れるかについての話を見続けていますが、例に関して具体的なものはまだ見つかりませんでした。
現在、次のような呼び出しがあります:Model::function()
ビューファイルと次のようなチェック$var = app()->request->getParam(value, false);
Model::function() や Model::model()->scope1()->scope2()->findAll() のようなコントローラー ファイルに呼び出しがあります。また、コントローラー ファイルが少し太くなっていると思いますが、そうではありません。肥大化の方法と場所を確認してください。DRYについて読んでいますが、いわばコードを正確に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));?>
すべての応答に感謝します