strongsquirrel/ yii2-crud
Yii2 的 CRUD 扩展
v3.1.0
2015-12-13 10:03 UTC
Requires
- php: >=5.4
- yiisoft/yii2: ~2.0
This package is not auto-updated.
Last update: 2024-09-14 18:42:07 UTC
README
Yii2 的 CRUD 扩展。
安装
运行Composer命令以安装最新稳定版本
composer require strongsquirrel/yii2-crud @stable
该扩展提供以下操作的基本功能以创建 CRUD:
index
:模型列表create
:创建模型update
:更新模型delete
:删除模型view
:查看模型search
:搜索模型
使用方法
简单方法
只需创建控制器
use strongsquirrel\crud\CrudController; class AwesomeController extends CrudController { public $modelClass = Model::class; }
或使用特殊特性
class AwesomeController extends YourController { use strongsquirrel\crud\CrudTrait; public $modelClass = Model::class; }
IndexAction
在您的控制器中声明以下内容
use strongsquirrel\crud\IndexAction; public function actions() { return [ 'index' => [ 'class' => IndexAction::className(), 'modelClass' => MyModel::className(), 'view' => 'index', // by default // 'prepareDataProvider' => [$this, 'prepareDataProvider'], // 'checkAccess' => [$this, 'checkAccess'], ], ]; }
视图文件 index.php
echo GridView::widget([ 'dataProvider' => $dataProvider, ]);
CreateAction
在您的控制器中声明以下内容
use strongsquirrel\crud\CreateAction public function actions() { return [ 'create' => [ 'class' => CreateAction::className(), 'modelClass' => MyModel::className(), 'scenario' => MyModel::SCENARIO_DEFAULT, // by default 'view' => 'create', // by default // 'findModel' => [$this, 'findModel'], // 'checkAccess' => [$this, 'checkAccess'], // 'afterSave' => [$this, 'onAfterSave'], ], ]; }
视图文件 create.php
$form = ActiveForm::begin(); echo $form->field($model, 'title'); ActiveForm::end();
UpdateAction
在您的控制器中声明以下内容
use strongsquirrel\crud\UpdateAction public function actions() { return [ 'update' => [ 'class' => UpdateAction::className(), 'modelClass' => MyModel::className(), 'scenario' => MyModel::SCENARIO_DEFAULT, // by default 'view' => 'update', // by default // 'findModel' => [$this, 'findModel'], // 'checkAccess' => [$this, 'checkAccess'], // 'afterUpdate' => [$this, 'onAfterSave'], ], ]; }
视图文件 update.php
$form = ActiveForm::begin(); echo $form->field($model, 'title'); ActiveForm::end();
DeleteAction
在您的控制器中声明以下内容
use strongsquirrel\crud\DeleteAction public function actions() { return [ 'delete' => [ 'class' => DeleteAction::className(), 'modelClass' => MyModel::className(), // 'findModel' => [$this, 'findModel'], // 'checkAccess' => [$this, 'checkAccess'], // 'afterDelete' => [$this, 'onAfterDelete'], ], ]; }
ViewAction
在您的控制器中声明以下内容
use strongsquirrel\crud\ViewAction public function actions() { return [ 'view' => [ 'class' => ViewAction::className(), 'modelClass' => MyModel::className(), 'view' => 'view', // by default // 'findModel' => [$this, 'findModel'], // 'checkAccess' => [$this, 'checkAccess'], ], ]; }
视图文件 view.php
echo DetailView::widget([ 'model' => $model, ]);
SearchAction
在您的控制器中声明以下内容
use strongsquirrel\crud\SearchAction public function actions() { return [ 'index' => [ 'class' => SearchAction::className(), 'modelClass' => MySearchModel::className(), 'scenario' => MySearchModel::SCENARIO_DEFAULT, // by default 'view' => 'search', // by default 'formMethod' => SearchAction::FORM_METHOD_GET, // by default 'searchMethod' => 'search', // by default 'searchOptions' => [], // by default // 'checkAccess' => [$this, 'checkAccess'], ], ]; }
将搜索方法添加到您的类模型中
class MySearchModel extends Model { // ... /** * The search method. * Should return an instance of [[DataProviderInterface]]. * * @param array $options your search options * * @return ActiveDataProvider */ public function search(array $options = []) { $query = MyModel::find(); if ($this->validate()) { $query->filterWhere($this->getAttributes()); } if (!empty($options['active'])) { $query->andWhere(['status' => MyModel::STATUS_ACTIVE]); } return new ActiveDataProvider(['query' => $query]); } }
视图文件 search.php
echo GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $filterModel, ]);
食谱
更改 CrudTrait 动作
namespace app\controllers; use app\models\News; use strongsquirrel\crud\CrudTrait; class NewsController extends Controller { use CrudTrait { actions as traitActions; } public $modelClass = News::class; public function actions() { $actions = $this->traitActions(); unset($actions['view']); unset($actions['update']); unset($actions['delete']); unset($actions['search']); $actions['create']['afterSave'] = function () { return $this->redirect('index'); }; return $actions; } }
视图中的额外参数
namespace app\controllers; use app\models\City; use app\models\User; use strongsquirrel\crud\UpdateAction; use strongsquirrel\crud\ViewAction; class UsersController extends Controller { /** * @inheritdoc */ public function actions() { return [ 'update' => [ 'class' => UpdateAction::className(), 'modelClass' => User::className(), 'params' => [ 'cities' => [$this, 'getCities'], 'title' => 'Update User', ], ], 'view' => [ 'class' => ViewAction::className(), 'modelClass' => User::className(), 'params' => function (User $model) { return [ 'posts' => function (User $model) { return $model->posts; }, 'city' => $model->city, 'cities' => [$this, 'getCities'], ]; }, ], ]; } /** * @return City[] */ public function getCities() { return City::findAll(); } }
许可
MIT 许可证(MIT)。有关更多信息,请参阅LICENSE.md。