deesoft / yii2-inertia
Yii2 inertia js
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- php: >=5.5.0
- yiisoft/yii2: ~2.0.0
This package is auto-updated.
Last update: 2025-02-24 13:42:42 UTC
README
This is the Yii 2 server-side adapter for Inertia.
With Inertia you are able to build single-page apps using classic server-side routing and controllers, without building an API.
See client-side setup for client instalation.
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist deesoft/yii2-inertia "*"
or add
"deesoft/yii2-inertia": "*"
to the require section of your composer.json
file.
Usage
Once the extension is installed, simply use it in your controller :
public function actionIndex() { $query = User::find(); $request = Yii::$app->getRequest(); $query->andFilterWhere([ 'id' => $request->get('id'), 'active' => $request->get('active'), ]); $query->andFilterWhere(['ilike', 'username', $request->get('username')]) ->andFilterWhere(['ilike', 'email', $request->get('email')]) ->andFilterWhere(['ilike', 'phone', $request->get('phone')]); if ($q = $request->get('q')) { $query->andWhere([ 'OR', ['ilike', 'username', $q], ['ilike', 'email', $q], ['ilike', 'phone', $q], ]); } $sortAttrs = [ 'id', 'username', 'email', 'phone', ]; $dataProvider = new ActiveDataProvider([ 'query' => $query, 'sort' => [ 'attributes' => $sortAttrs, ] ]); return Inertia::render('user/index', [ 'data' => $dataProvider ]); } public function actionCreate() { $model = new User(); if ($this->request->isPost) { if ($model->load($this->request->post(), '') && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } } return Inertia::render('user/create', [ 'model' => $model, ]); }
Configuration
Add configuration to Application $params config.
'components' => [ ... ], 'params' => [ 'inertia' => [ 'tag' => 'div', // default div 'id' => 'app', // default app 'viewFile' => '@app/views/app.php', // default @dee/inertia/views/app.php 'serializer' => ['class' => dee\inertia\Serializer::class], //default 'encript_history' => true, // default false 'vite_entry_file' => 'client/app.js', // default 'app_title' => 'My App', // default My Application ], 'inertia.shared' => [ 'user' => function(){ if(!Yii::$app->user->isGuest){ return ['id' => Yii::$app->user->id]; } } ], ],