У меня есть таблица с офисными сотрудниками.
И есть вот такая таблица (В самом низу см. Сотрудник офиса)
Код: Выделить всё
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'layout' => "{summary}\n{pager}\n{items}\n{pager}",
'pager' => [
'class' => CustomPageLinkPager::class,
'lastPageLabel' => '»»|',
'firstPageLabel' => '|««'
],
'columns' => [
[
'attribute' => 'id',
'label' => 'ID'
],
[
'format' => 'raw',
'label' => 'Логин',
'attribute' => 'user.username',
'filter' => Html::activeTextInput($searchModel, $searchModel::FIELD_USERNAME,[
'class' => 'form-control'
])
],
[
'label' => 'Имя',
'value' => function(ClientSearch $model)
{
return $model->user->passport->first_name;
},
'filter' => Html::activeTextInput($searchModel, $searchModel::FIELD_FIRST_NAME,[
'class' => 'form-control'
])
],
[
'label' => 'Фамилия',
'value' => function(ClientSearch $model)
{
return $model->user->passport->last_name;
},
'filter' => Html::activeTextInput($searchModel, $searchModel::FIELD_LAST_NAME,[
'class' => 'form-control'
])
],
[
'attribute'=>Client::FIELD_IS_ACTIVE,
'format'=>'boolean'
],
[
'label' => 'Activation and Card Fee',
'value' => function(ClientSearch $model)
{
return yii::$app->formatter->asBoolean(
(new \common\components\finance\metadata\AccountMetadataFactory())
->findByMetaKeyId(
$model->getDefaultAccount(),
\common\components\ServiceFacade::getOperationMetaKeyCommonService()->getIdByName(\common\enums\MetaKeyEnum::ACCOUNT_FEE_PAID))
->value);
},
'filter' => Html::activeDropDownList($searchModel, $searchModel::FIELD_FEE_PAID, [
// todo: use SelectDecorator and YesNo Enum
''=>'',
'1'=>'Да',
'0'=>'Нет',
] ,[
'class' => 'form-control'
])
],
[
'label' => 'Разблокированные расходные операции',
'value' => function(ClientSearch $model)
{
return yii::$app->formatter->asBoolean(
$model->getDefaultAccount()->getOutcomeEnabled());
},
'filter' => Html::activeDropDownList($searchModel, $searchModel::FIELD_OUTCOME_ENABLED, [
// todo: use SelectDecorator and YesNo Enum
''=>'',
'1'=>'Да',
'0'=>'Нет',
] ,[
'class' => 'form-control'
])
],
[
'class' => 'yii\grid\ActionColumn',
'template' => '{update}'
],
[
'label'=>Client::FIELD_DOC_CONTROL,
'value' => function (ClientSearch $model){
if($model->doc_control == null ) {
return "Нет";
}
else return "Да";
}
],
[
'format'=> 'html',
'label' => 'needs_overview',
'value' => function(ClientSearch $model)
{
$service = \common\components\ServiceFacade::getClientCommonService();
$docs = $service->hasUnoverviewedDocs($model);
if($docs)
{
return Html::a('<span class="glyphicon glyphicon-flag"></span>','#');
}
},
],
[
'attribute' =>'status',
'filter' => Html::activeDropDownList($searchModel, $searchModel::FIELD_STATUS,
\common\components\Decorator::decorateSelect([
ClientStatusEnum::STATUS_ACTIVE => ClientStatusEnum::STATUS_ACTIVE,
ClientStatusEnum::STATUS_DELETED => ClientStatusEnum::STATUS_DELETED
]) ,[
'class' => 'form-control', 'style' => 'width:100px'
])
],
'create_time:date',
[
'label' => 'Сотрудник офиса',
'value' => function(Client $model)
{
if(isset($model->office_worker)){
return $model->office_worker;
}
},
'filter' => Html::activeTextInput($searchModel, $searchModel::FIELD_FIRST_NAME,[
'class' => 'form-control'
])
],
],
]); ?>
Написал вот такую функцию в модели Client
Код: Выделить всё
public function getOfficeWorker()
{
return $this->hasOne(OfficeWorker::className(), [OfficeWorker::FIELD_ID => self::FIELD_OFFICE_WORKER]);
}
Код: Выделить всё
use common\models\Client;
use yii\db\Migration;
class m171020_120446_alter_add_office_worker_client_table extends Migration
{
public function up()
{
$this->addColumn(Client::tableName(), Client::FIELD_OFFICE_WORKER, $this->integer());
}
public function down()
{
$this->dropColumn('client', 'office_worker');
}
}
http://prntscr.com/gztt61
Вот к примеру я пытаюсь вставить сюда выпадающий список OFFiCE_WORKER
Код: Выделить всё
<div class="control-group">
<?= $form->field($model, $model::FIELD_PRODUCT_NAME) ?>
<?= $form->field($model, $model::FIELD_AGIO_CREDIT)
->dropDownList(\common\enums\YesNoEnum::map()) ?>
<?= $form->field($model, $model::FIELD_OFFICE_WORKER)
->dropDownList() ?>
<? if (\common\models\User::current()->checkRole(\common\enums\RoleEnum::ROLE_ADMIN)):
print $form->field($model, $model::FIELD_CONTRACT_SUM);
else: ?>
<div class='form-group'>
<?= Html::label('Contract Sum', null, ['class' => 'control-label']) ?>
<?= Html::input('number', null, $model->contract_sum, ['disabled' => true, 'class' => 'form-control']); ?>
</div>
<? endif ?>
<?= $form->field($model, $model::FIELD_IS_PEP)
->dropDownList(\common\enums\YesNoEnum::map()) ?>
</div>