gofmanaa / yii2-simplechat
A simple chat for your yii2 application
Installs: 67
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 38
Type:yii2-extension
pkg:composer/gofmanaa/yii2-simplechat
Requires
- bower-asset/twig.js: 0.8.4@stable
- yiisoft/yii2: ~2.0.0
- yiisoft/yii2-twig: dev-master
Requires (Dev)
- yiisoft/yii2-bootstrap: ~2.0.0
- yiisoft/yii2-faker: *
This package is not auto-updated.
Last update: 2025-10-26 01:27:39 UTC
README
#Yii2 Simple Chat A simple chat for your yii2 application
##Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist gofmanaa/yii2-simplechat
or add
"gofmanaa/yii2-simplechat": "~2.0",
to the require section of your composer.json file.
##Demo only
Once the extension is installed, simply modify your application configuration as follows:
return [ 'bootstrap' => ['simplechat'], 'modules' => [ 'simplechat' => [ 'class' => 'bubasuma\simplechat\Module', ], // ... ], // ... ];
Use the same configuration for your console application:
Note: You need this configuration to access simple chat via command line. You can remove it in production mode.
You can access Simple Chat via command line as follows:
# change path to your application's base path
cd path/to/AppBasePath
# show available commands
php yii simplechat
# create test tables, generates and load fixtures
php yii simplechat/start
# unload fixtures
php yii simplechat/clean
# unload fixtures and load them again
php yii simplechat/reset
# unload fixtures and drop test tables
php yii simplechat/stop
You can specify different options of the start and reset command:
# You can specify how many fixtures per user and message you need by the --users and --messages options
php yii simplechat/start --users=50 --messages=10000
php yii simplechat/reset --users=20 --messages=5000
# You can specify in what language to generate fixtures by the --language option. Thanks to yii2-faker
php yii simplechat/start --language="ru_RU"
php yii simplechat/reset --language="fr_FR"
You can then access Simple Chat through the following URL:
http://localhost/path/to/index.php?r=messages/2
or if you have enabled pretty URLs, you may use the following URL:
http://localhost/path/to/index.php/messages/2
You should see the below:
If not, please check if demo migration has been successfully applied against your database. You can check it by running the following command:
php yii simplechat/start
Note: the command above is accessible only if you have configured your console application as it is recommended above.
##Usage
Create an ActiveRecord like follow:
namespace common\models; //... use bubasuma\simplechat\db\Model; use common\models\User; use yii\db\ActiveQuery; //... class Message extends Model { public function getContact() { return $this->hasOne(User::className(), ['id' => 'contact_id']); } /** * @inheritDoc */ public static function conversations($userId) { return parent::conversations($userId)->with([ //... 'contact' => function ($contact) { /**@var $contact ActiveQuery * */ $contact->with([ //... ])->select(['id', ]); }, //... ]); } }
Create a controller like follow:
namespace frontend\controllers; //... use yii\web\Controller; use yii\helpers\StringHelper; use common\models\Message; use bubasuma\simplechat\controllers\ControllerTrait; //... class MessageController extends Controller { use ControllerTrait; /** * @return string */ public function getModelClass() { return Message::className(); } /** * @inheritDoc */ public function formatMessage($model) { //... return $model; } /** * @inheritDoc */ public function formatConversation($model) { //... $model['text'] = StringHelper::truncate($model['text'], 20); //... return $model; } }
Note: If you are using this extension in your frontend application, you can find the usage of widgets in
index.twig.
##FAQ
Does this extension work with any template engines other than twig?
Yes. Given that, the default render in yii2 is php, you must indicate explicitly the extension part in view names.
Can I use this extension in a RESTful APIs?
Yes, You can.
Can I use different template engines for rendering in server side and client side?
Yes. But using the same template in both sides remains the best implementation.