私のアプリケーションでは、拡張機能を使用しています。この拡張モジュールには、ActiveRecordベースのクラスがあり、別のプロパティでアプリケーション内で拡張したいと思っています。何とかこれをやることができますか?とにかくFactory助けてもいいですか?Yii behaviour?拡張子でYii2拡張の一部であるモデルを拡張する方法は?
クラス:
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'],
];
}
}
ProductControllerと、対応するビューファイル(インデックス、作成、更新、ビュー、_form)が定期的にGIIで製造された拡張子でもあります。私はちょうど別のプロパティ$description
(文字列、必須)を製品に追加したいと思います。必要な列を追加するための移行が利用可能です。
モデルとコントローラのクラスとビューファイルを上書きする必要がありますか?それともより洗練されたソリューションですか?私は創造に影響を与えることができない私の理解から
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を変更する必要があるということです。
拡張機能を設定することもできます。クラスマップ機能を使用することもできます。http://www.yiiframework.com/doc-2.0/guide-concept-autoloading.html#class-map – soju
@sojuクラスマップはちょっとハッキーだね。ではない?どのようにして拡張機能を構成可能にすることができますか(私はまだ構成全体に精通していません)?それを延長する準備は大丈夫です。 – robsch