bubasuma / yii2-simplechat
A simple chat for your yii2 application
Installs: 7 590
Dependents: 1
Suggesters: 0
Security: 0
Stars: 87
Watchers: 16
Forks: 38
Open Issues: 14
Type:yii2-extension
Requires
- yiisoft/yii2: ~2.0.0
Requires (Dev)
- bower-asset/twig.js: 0.8.4@stable
- yiisoft/yii2-bootstrap: ~2.0.0
- yiisoft/yii2-faker: *
- yiisoft/yii2-twig: dev-master
This package is not auto-updated.
Last update: 2024-11-09 19:45:24 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 bubasuma/yii2-simplechat
or add
"bubasuma/yii2-simplechat": "*"
to the require section of your composer.json
file.
##Demo
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
or if you have enabled pretty URLs, you may use the following URL:
http://localhost/path/to/index.php/messages
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
Extend the main conversation
class like follow:
namespace common\models; use common\models\User; //... class Conversation extends \bubasuma\simplechat\db\Conversation { public function getContact() { return $this->hasOne(User::className(), ['id' => 'contact_id']); } /** * @inheritDoc */ protected static function baseQuery($userId) { return parent::baseQuery($userId) ->with(['contact.profile']); } /** * @inheritDoc */ public function fields() { return [ //... 'contact' => function ($model) { return $model['contact']; }, 'deleteUrl', 'readUrl', 'unreadUrl', //... ]; } }
Extend the main message
class like follow:
namespace common\models; //... class Message extends \bubasuma\simplechat\db\Message { /** * @inheritDoc */ public function fields() { return [ //... 'text', 'date' => 'created_at', //... ]; } }
Create a controller like follow:
namespace frontend\controllers; //... use yii\web\Controller; use common\models\Conversation; use common\models\Message; use bubasuma\simplechat\controllers\ControllerTrait; //... class MessageController extends Controller { use ControllerTrait; /** * @return string */ public function getMessageClass() { return Message::className(); } /** * @return string */ public function getConversationClass() { return Conversation::className(); } }
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.