Я прочитал плагин и обнаружил, что его general plugin
, чтобы сделать его совместимым * от 1003 * до users plugin
, нам нужно добавить туда дополнительный код .
- Добавить необходимые поля в таблицу (вручную)
нам нужно вручную добавить country_id
и state_id
в таблицу users
Вы можете добавить их, создав новый файл версии из builder plugin and apply that. make sure it stays
country_id и state_id [ in your case you tried to change them if that so just revert back and add postfix
_id`]
<?php namespace HardikSatasiya\SoTest\Updates;
use Schema;
use October\Rain\Database\Updates\Migration;
class Migration1013 extends Migration
{
public function up()
{
Schema::table('users', function($table)
{
$table->integer('country_id')->unsigned()->nullable()->index();
$table->integer('state_id')->unsigned()->nullable()->index();
});
}
public function down()
{
// Remove fields
}
}
Теперь в методе вашего плагина boot
добавьте этот код
<?php namespace HardikSatasiya\SoTest;
// ...
use RainLab\User\Models\User as UserModel;
class Plugin extends PluginBase
{
public function boot() {
UserModel::extend(function ($model) {
$model->implement[] = 'RainLab.Location.Behaviors.LocationModel';
$model->addFillable([
'country_id',
'state_id',
]);
});
// ...
Теперь просто попробуйте сохранить ваши данные, они должны сохранить country and state
и получить их вы можете использовать
echo $userModel->country_code; // US
echo $userModel->state_code; // FL
echo $userModel->country_id; // 10 respective id
echo $userModel->state_id; // 22 respective id
С установленным плагином User Plus (+)
Не уверен с плагином User Plus (+), но я отладил и обнаружил некоторые проблемы из-за этой фиксации https://github.com/rainlab/location-plugin/commit/6360a319f1e1e3eff8b6a43e85bdfdf3f84fbb58 fillable is not working properly
.
Итак, мы можем попытаться добавить его еще раз вручную.
<?php namespace HardikSatasiya\SoTest;
// ...
use RainLab\User\Models\User as UserModel;
class Plugin extends PluginBase
{
public function boot() {
UserModel::extend(function ($model) {
$model->addFillable([
'country_id',
'state_id',
]);
});
если есть сомнения, прокомментируйте.