私のアプリケーションでは、拡張機能を使用しています (これは私が所有しており、変更する可能性があります)。この拡張機能には、別のプロパティを使用してアプリケーションで拡張したい ActiveRecord ベースのクラスがあります。どうにかしてこれを行うことはできますか?FactoryはどうにかしてYii の振る舞いを助けることができますか?
拡張子のクラス:
namespace extension;
/**
* @property integer $id
* @property string $name
*/
class Product extends ActiveRecord {
public static function tableName() {
return 'product';
}
/**
* @inheritdoc
*/
public function rules() {
return [
[['id', 'name'], 'required'],
[['id'], 'integer'],
[['name'], 'string'],
];
}
}
拡張機能には、通常 gii で作成された ProductController と対応するビュー ファイル (index、create、update、view、_form) もあります。$description
製品に別のプロパティ (文字列、必須) を追加したいだけです。必要な列を追加するための移行が利用可能です。
モデルとコントローラ クラス、およびビュー ファイルを上書きする必要がありますか? それとも、よりエレガントなソリューションですか?
たとえば、 extension 内で行われる標準的なオブジェクトの作成を考えてみましょう:
public function actionCreate() {
$model = new Product();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'language' => $model->language]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
私の理解では、創造物に影響を与えることはできません。それとも私が間違っていますか?
私の印象では、すべてをオーバーライドして (プロパティを表示する必要があるため、ビュー ファイルも)、controllerNamespaceを変更する必要があります。