[extension] pingcrm-yii2-vue3


Ping CRM on Yii 2

  1. Demo
  2. Installation
  3. Running tests
  4. Requirements
  5. Extending this project
  6. Credits

A Yii 2 demo application to illustrate how Inertia.js works.
With Inertia you are able to build single-page apps using classic server-side routing and controllers, without building an API.
This application is a port of the original Ping CRM written in Laravel and based on the Yii 2 Basic Project Template.

Based on the application Ping CRM on Yii 2 github and yii extension.
Changes: Updated Vue to version 3, updated npm packages and composer. Converted Vue files to Composition API (script setup).
Demo https://pingcrm-yii2.tebe.ch
Installation Clone the repo locally:
git clone https://github.com/toatall/pingcrm-yii2-vue3 pingcrm-yii2-vue3
cd pingcrm-yii2-vue3

Install PHP dependencies:
composer install

Install NPM dependencies:
npm ci

Build assets:
npm run css-dev
npm run dev

Create an SQLite database. You can also use another database (MySQL, Postgres), simply update your configuration accordingly.
touch database/database.sqlite

Run database migrations:
php yii migrate

Run database seeder:
php yii db/seed

Run the dev server (the output will give the address):
php yii serve

You're ready to go! Visit Ping CRM in your browser, and login with:

Running tests To run the Ping CRM tests, run:
(to be done)

Requirements

  • PHP >=7.4.0
  • Node.js & NPM
  • SQLite

Extending this project The following steps are required when extending this project with new features.
In the backend

  • add new controller, that extends from inertia controller
  • add one ore more actions
  • return from the actions with a call to the inertia render method

<?php

namespace app\controllers;

use tebe\inertia\web\Controller;

class CustomController extends Controller
{
public function actionIndex()
{
$params = [
'data' => [],
];
return $this->inertia('demo/index', $params);
}
}

You can find more information at https://github.com/tbreuss/yii2-inertia.
In the frontend

  • add a new page under resources/js/Pages for each controller action you added in the backend
  • copy&paste one of the existing page examples
  • implement and/or extend Vue.js stuff as needed
  • use frontend tooling as described here and in package.json

You can find more information at https://inertiajs.com.
Credits

  • Original work by Jonathan Reinink (@reinink) and contributors
  • Port to Yii 2 by Thomas Breuss (@tbreuss)
  • Modified by @toatall (https://github.com/toatall)