matthew-p / yii2-di-magic
对Yii2的改进,增加动作方法中的依赖注入并提供模型绑定。
2.0.1
2018-03-29 09:59 UTC
Requires
- php: >=7.0
- yiisoft/yii2: *
This package is auto-updated.
Last update: 2023-08-19 22:54:18 UTC
README
对Yii2的改进,增加动作方法中的依赖注入并提供模型绑定。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一:
php composer.phar require --prefer-dist matthew-p/yii2-di-magic "*"
或者将以下内容添加到您的 composer.json
文件的 require 部分:
"matthew-p/yii2-di-magic": "*"
使用方法
扩展安装完成后,只需在您的代码中简单使用即可:
在 main.php 配置中添加
return [ ... 'container' => [ 'definitions' => [ ARModel::class => DIClassBuilder::bind([ 'className' => ARModel::class, // optional 'requestFields' => ['id', 'model_id'], // array request fields (find by primaryKey) 'errorMessage' => Yii::t('app', 'Model not found'), ]); ARModel2::class => DIClassBuilder::bind([ 'requestFields' => ['requestField' => 'modelColumn', 'requestField2' => 'modelColumn', 'requestFiled'], // find by primary key or modelColumn 'errorMessage' => Yii::t('app', 'Model not found'), ]); ARModel3::class => DIClassBuilder::bind(); // find by id default ], ], ... ];
并使用
class ModelController extends Controller { use ActionDITrait; /** * View model. * * @param ARModel $model * * @return string * @throws NotFoundHttpException */ public function actionView(ARModel $model): string { // A search was made in the database. var_dump($model); ... // Get empty model $duplicateModel = Yii::$container->get(ARModel::class); } /** * Sample action. * * @param ARModel|NULL $model not required * * @return void */ public function actionSample(ARModel $model = NULL): void { if (is_null($model)) { // } } }
运行: /model/view?id=1 或 /model/view?model_id=1 或 /model/sample?id=99999
就这么多。检查一下。