Редактируемый выпадающий список.

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Игорь Корытин
Сообщения: 1
Зарегистрирован: 2019.08.12, 16:34

Редактируемый выпадающий список.

Сообщение Игорь Корытин » 2019.08.12, 16:48

Добрый день, я очень далек от PHP, но так получилось, что мое руководство приобрело сервис именно на данном языке, а мне теперь приходится делать правки, т.к. разработчик этого замечательного сервиса отказывается давать хоть какую-то информацию, поэтому прошу о помощи вас, т.к. уже не знаю куда копать, и так вопрос:
Есть некая форма, в которой есть поле Конфигурационные единицы, оно реализовано с помощью выпадающего списка с возможностью редактирования и имеет вот такой код:

<?php if (Yii::app()->user->checkAccess('canSetUnitRequest')): ?>
<span class="iicon iicon-laptop-phone"></span><strong> <?php echo Yii::t('main-ui', 'Configuration units'); ?>:</strong> <?php $this->widget(
'bootstrap.widgets.TbEditableField',
array(
'type' => 'select2',
'mode' => 'inline',
'model' => $model,
'emptytext' => Yii::t('main-ui', 'Not set'),
'select2' => array(
'tags' => Yii::app()->user->checkAccess('unitByUserRequest') ? Cunits::uuall($model->CUsers_id) : Cunits::auall(),
'tokenSeparators' => array(','),
'width' => '250px'
),
'attribute' => 'cunits', // $model->name will be editable
'options' => array('params' => array(Yii::app()->getRequest()->csrfTokenName => Yii::app()->getRequest()->csrfToken)),
'url' => $this->createUrl('updUnits', array('id' => $model->id)), //url for submit data
'success' => 'js: function(data) {
location.reload();
}'
)
); ?><br/>
<?php endif; ?>

Фактически, мне нужно сделать два точно таких же поля: Договор и Сервис, я скопировал код и изменил его для того чтобы эти поля появились и получилось следующее:
<?php if (Yii::app()->user->checkAccess('updateRequest')): ?>
<span class="iicon iicon-layers"></span><strong> <?php echo Yii::t('main-ui', 'Contract'); ?>:</strong> <?php $this->widget(
'bootstrap.widgets.TbEditableField',
array(
'type' => 'select2',
'mode' => 'inline',
'model' => $model,
'emptytext' => Yii::t('main-ui', 'Not set'),
'select2' => array(
'tags' => Yii::app()->user->checkAccess('updateRequest'),
'tokenSeparators' => array(','),
'width' => '250px'
),
'attribute' => 'contract', // $model->name will be editable
'options' => array('params' => array(Yii::app()->getRequest()->csrfTokenName => Yii::app()->getRequest()->csrfToken)),
'url' => $this->createUrl('Update', array('id' => $model->id)), //url for submit data
'success' => 'js: function(data) {
location.reload();
}'
)
); ?><br/>
<?php endif; ?>

<?php if (Yii::app()->user->checkAccess('updateRequest')): ?>
<span class="iicon iicon-layers"></span><strong> <?php echo Yii::t('main-ui', 'Service'); ?>:</strong> <?php $this->widget(
'bootstrap.widgets.TbEditableField',
array(
'type' => 'select2',
'mode' => 'inline',
'model' => $model,
'emptytext' => Yii::t('main-ui', 'Not set'),
'select2' => array(
'tags' => Yii::app()->user->checkAccess('updateRequest'),
'tokenSeparators' => array(','),
'width' => '250px'
),
'attribute' => 'service_name', // $model->name will be editable
'options' => array('params' => array(Yii::app()->getRequest()->csrfTokenName => Yii::app()->getRequest()->csrfToken)),
'url' => $this->createUrl('Update', array('id' => $model->id)), //url for submit data
'success' => 'js: function(data) {
location.reload();
}'
)
); ?><br/>
<?php endif; ?>

Но у меня возникли несколько вопросов, очень надеюсь, что кто-нибудь на этом форуме сможет мне подсказать, и так:
1. Поле договор не становится редактируемым, если я в ручную создам заявку и укажу данный договор, то оно будет отображаться. Если заявка создастся автоматически, то поле будет пустым и не будет возможности добавить в него договор. Как можно исправить данный момент и что я мог не учесть?
2. В первоначальном коде есть строка:
'url' => $this->createUrl('updUnits', array('id' => $model->id)), //url for submit data
которая формирует url для обновления необходимого поля.
В своих измененных я пока поставил в url просто update, но понимаю, что мне нужно где-то прописать отдельное действие и url, который вызывает это действие, однако, я не представляю где это делать.

Мне четко дали понять, что на этот проект не выделят не каких разработчиков и мне разбираться в этом во всем самому, поэтому искренне рассчитываю на вашу помощь и готов предоставить любую необходимую информацию.

Ответить