За последние 24 часа нас посетили 16557 программистов и 1578 роботов. Сейчас ищут 1023 программиста ...

yii2 как передать значения в DetailView?

Тема в разделе "Yii", создана пользователем mixnet, 14 сен 2020.

  1. mixnet

    mixnet Новичок

    С нами с:
    11 авг 2018
    Сообщения:
    146
    Симпатии:
    7
    в данную переменную получаю массив $templateData, такого вида

    Код (Text):
    1. [
    2.     0 => [
    3.         'title' => 'Имя'
    4.         'value' => 'Макс'
    5.         'type' => 5
    6.     ]
    7.     1 => [
    8.         'title' => 'Фамилия'
    9.         'value' => 'Петров'
    10.         'type' => 5
    11.     ]
    12.     2 => [
    13.         'title' => 'Телефон'
    14.         'value' => '12345678910'
    15.         'type' => 3
    16.     ]
    17.     3 => [
    18.         'title' => 'Дата рождения'
    19.         'value' => '1 янв. 1999 г.'
    20.         'type' => 12
    21.     ]
    22.     4 => [
    23.         'title' => 'Пол'
    24.         'value' => 'Мужской'
    25.         'type' => 8
    26.     ]
    27. ]

    вот строчка кода, где формируется данный массив
    Код (Text):
    1. $templateData = $fieldsManage->getData($modelUserForm->document_id, $modelUserForm->document->template_id);
    ниже код как все это выглядет

    Код (Text):
    1. <?php
    2.     /* @var $modelUserForm \common\models\forms\UserForm */
    3.     if (isset($modelUserForm->document)): ?>
    4.         <div class="col-md-12">
    5.             <?php
    6.             /* @var $fieldsManage \common\widgets\TemplateOfElement\components\FieldsManage */
    7.             $fieldsManage = Yii::$app->fieldsManage;
    8.             $templateData = $fieldsManage->getData($modelUserForm->document_id, $modelUserForm->document->template_id);
    9.             ?>
    10.         </div>
    11.     <?php endif; ?>

    как передать значения в DetailView?

    Код (Text):
    1. <div class="col-md-12">
    2.         <?= DetailView::widget([
    3.             'model' => $modelUserForm,
    4.             'attributes' => [
    5.                 'id',
    6.                 'email:email',
    7.                 'created_at:date',
    8.                 'updated_at:date',
    9.                 [
    10.                     'attribute' => 'document_id',
    11.                     'format' => 'raw',
    12.                     'value' => call_user_func(function ($modelUserForm) {
    13.                         /* @var $modelUserForm \common\models\forms\UserForm */
    14.                         if (isset($modelUserForm->document)) {
    15.                             return $modelUserForm->document->template->name;
    16.                         }
    17.                         return null;
    18.                     }, $modelUserForm),
    19.                     'captionOptions' => [
    20.                         'style' => 'width: 50% !important;'
    21.                     ]
    22.                 ],
    23.             ],
    24.         ]) ?>
    25.     </div>
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    через use (), как обычно в анонимных функциях. А зачем call_user_func? Если не ошибаюсь, Yii понимает калбеки для value.
     
  3. mixnet

    mixnet Новичок

    С нами с:
    11 авг 2018
    Сообщения:
    146
    Симпатии:
    7
    подобие такой конструкции?


    Код (PHP):
    1.    'value' => call_user_func(function ($modelUserForm) {
    2.                         /* @var $modelUserForm \common\models\forms\UserForm */
    3.                         if (isset($modelUserForm->document)) {
    4.                             return $modelUserForm->document->template->name;
    5.                         }
    6.                         return null;
    7.                     }, $modelUserForm),
     
    #3 mixnet, 14 сен 2020
    Последнее редактирование: 14 сен 2020
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    В php, чтоб использовать переменную из внешней области видимости внутри анонимной функции, её необходимо указать в конструкции use($varName). Если этого не знаете, рано вам на Yii писать, как и на любом другом фреймворке
     
    mixnet нравится это.