PHP code example of rootlocal / yii2-crud

1. Go to this page and download the library: Download rootlocal/yii2-crud library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

rootlocal / yii2-crud example snippets





namespace rootlocal\crud\test\app\controllers;

use rootlocal\crud\test\app\models\db\Book;
use rootlocal\crud\test\app\models\search\BookSearch;
use rootlocal\crud\controllers\ActiveController;

/**
 * Class CrudController
 * @package rootlocal\crud\test\app\controllers
 */
class CrudController extends ActiveController
{
    /** @var string */
    public $modelClass = Book::class;
    /** @var string */
    public $modelSearchClass = BookSearch::class;
}



use rootlocal\crud\test\app\models\db\Book;
use rootlocal\crud\test\app\models\search\BookSearch;
use yii\web\Controller;
use rootlocal\crud\actions\CreateAction;
use rootlocal\crud\actions\DeleteAction;
use rootlocal\crud\actions\IndexAction;
use rootlocal\crud\actions\UpdateAction;
use rootlocal\crud\actions\ValidateAction;
use rootlocal\crud\actions\ViewAction;

/**
 * Class BookController
 * @package rootlocal\crud\test\app\controllers
 */
class BookController extends Controller
{
    // ...

    /**
     * {@inheritdoc}
     * @return array
     */
    public function actions()
    {
        return [
            'index' => [
                'class' => IndexAction::class,
                'searchModel' => BookSearch::class,
            ],

            'view' => [
                'class' => ViewAction::class,
                'model' => Book::class,
            ],

            'validate' => [
                'class' => ValidateAction::class,
                'model' => Book::class,
                'scenario' => Book::SCENARIO_CREATE,
            ],

            'create' => [
                'class' => CreateAction::class,
                'model' => Book::class,
                'scenario' => Book::SCENARIO_CREATE,
            ],

            'update' => [
                'class' => UpdateAction::class,
                'model' => Book::class,
                'scenario' => Book::SCENARIO_UPDATE,
            ],

            'delete' => [
                'class' => DeleteAction::class,
                'model' => Book::class,
            ],
        ];
    }
    
    // ...
}


use rootlocal\crud\test\app\models\db\Book;
use yii\helpers\Html;
use yii\web\View;
use yii\widgets\ActiveForm;
use yii\helpers\Url;

/**
 * @var $this View
 * @var $model Book
 * @var $form ActiveForm
 */




use rootlocal\crud\test\app\models\db\Book;
use yii\data\ActiveDataProvider;
use rootlocal\crud\components\SearchModelInterface;
use rootlocal\crud\test\app\models\query\BookQuery;

/**
 * Class BookSearch
 * @package rootlocal\crud\test\app\models
 * 
 * @property BookQuery $query
 */
class BookSearch extends Book implements SearchModelInterface
{
    
    /**
     * @var BookQuery
     */
    private $_query;
    
    // ...
    
    /**
      * @return BookQuery
      */
     public function getQuery(): BookQuery
     {
         if ($this->_query === null) {
             $this->_query = self::find();
         }
 
         return $this->_query;
     }
     
     /**
      * @param BookQuery $query
      */
     public function setQuery(BookQuery $query): void
     {
         $this->_query = $query;
     }
     
     /**
      * Creates data provider instance with search query applied
      * @param array $params
      * @return ActiveDataProvider
      */
     public function search($params = [])
     {
         
         $query = $this->getQuery();
         $dataProvider = new ActiveDataProvider([
                        'query' => $query,
                    ]);
         // ...
            
         return $dataProvider;
     }
}



use rootlocal\crud\test\app\models\db\Book;
use rootlocal\crud\test\app\models\search\BookSearch;
use yii\web\Controller;
use rootlocal\crud\actions\CreateAction;
use rootlocal\crud\actions\DeleteAction;
use rootlocal\crud\actions\IndexAction;
use rootlocal\crud\actions\UpdateAction;
use rootlocal\crud\actions\ValidateAction;
use rootlocal\crud\actions\ViewAction;

/**
 * Class BookController
 * @package rootlocal\crud\test\app\controllers
 */
class BookController extends Controller
{
    // ...

    /**
     * {@inheritdoc}
     * @return array
     */
    public function actions()
    {
        return [
            'index' => [
                'class' => IndexAction::class,
                'searchModel' => BookSearch::class,
                'dataProvider' => function ($model, $queryParams) {
                    /**
                     * @var BookSearch $model
                     * @var array $queryParams
                     */
                    $model->query = $model::find()->active();
                    return $model->search($queryParams);
                }                
            ],

            'view' => [
                'class' => ViewAction::class,
                'model' => function ($id) {
                    /**
                     * @var int $id
                     */
                    return Book::find()->active()->where(['id' => $id])->one();
                }                
            ],

            // etc ...
        ];
    }
    
    // ...
}