ivankff/yii2-external-crud

yii2 Create, Update, Delete, View external actions for backend

Installs: 90

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Open Issues: 0

Type:yii2-extension

0.2.4 2021-02-20 09:47 UTC

This package is auto-updated.

Last update: 2024-04-20 16:59:57 UTC


README

Controller

public function actions()
{
    return [
        ...
        'create' => [
            'class' => 'ivankff\yii2ExternalCrud\actions\CreateAction',
            'view' => 'update',
            'additionalQueryParams' => ['F.categoryId'],
            'model' => function ($action) {
                $categoryId = Yii::$app->request->get('categoryId');
                $config = [];
                if ($categoryId)
                    $config = ['categories' => $categoryId];

                $model = new ProductForm(new Product(), $config);
                $model->status = 1;

                if (Yii::$app->user->can('backend.product.webmaster'))
                    $model->setScenario(ProductForm::SCENARIO_WEBMASTER);

                return $model;
            },
            'on ' . WriteAction::EVENT_BEFORE_VIEW => function ($event) {
                /** @var ActionWriteViewEvent $event */
                $event->viewParams['categories'] = $this->getCategories();
            }
        ],
        'update' => [
            'class' => 'ivankff\yii2ExternalCrud\actions\UpdateAction',
            'view' => 'update',
            'additionalQueryParams' => ['F.categoryId'],
            'model' => function ($id, $action) {
                $model = new ProductForm($this->findModel($id));

                if (Yii::$app->user->can('backend.product.webmaster'))
                    $model->setScenario(ProductForm::SCENARIO_WEBMASTER);

                return $model;
            },
            'on ' . WriteAction::EVENT_BEFORE_VIEW => function ($event) {
                /** @var ActionWriteViewEvent $event */
                $event->viewParams['categories'] = $this->getCategories();
            }
        ],
        'delete' => [
            'class' => 'ivankff\yii2ExternalCrud\actions\DeleteAction',
            'model' => function ($id, $action) {
                return $this->findModel($id);
            },
        ],
        ...
    ];
}