За последние 24 часа нас посетили 22649 программистов и 1281 робот. Сейчас ищут 959 программистов ...

Помогите навести порядок (совет)

Тема в разделе "Laravel", создана пользователем kedrach, 21 сен 2022.

  1. kedrach

    kedrach Новичок

    С нами с:
    21 сен 2022
    Сообщения:
    14
    Симпатии:
    0
    Приветствую. Laravel изучаю несколько дней.

    Сейчас стоит задача разобрать json файл по переменным и выводить во view. Все получается, но кажется, слишком усложняю задачу сам себе. Ниже прикрепляю код. Хотелось бы получить совет, как можно минимизировать его. (если это возможно)

    Model

    PHP:
    1.  /**
    2.                  * Загружаю атрибуты
    3.                  * return array
    4.                  */
    5.  
    6.                 $data = $json['СвЮЛ'];
    7.  
    8.                 $attributes = $data['@attributes'] ?? null; // ИНН, ОГРН, и т.д.
    9.                 $okved = $data['СвОКВЭД'] ?? null; // ОКВЭД
    10.                 $information = $data['СвНаимЮЛ'] ?? null; // Наименование юр. лица
    11.                 $create_at = $data['СвОбрЮЛ'] ?? null; // Сведения образования юр. лица
    12.  
    13.  
    14.                 /**
    15.                  * Финансы компании, если есть
    16.                  * Алгоритм написан в функции $this->ruFinCompanie
    17.                  * return array $fin
    18.                  * [year [ text : data ]]
    19.                  */
    20.  
    21.                 $fin = $this->ruFinCompanie($json);                
    22.  
    23.                 /**
    24.                  * Возврат вo view
    25.                  */
    26.                 return [
    27.                     /**
    28.                      * Возврат массива @attributes
    29.                      */
    30.  
    31.                     'inn' => $attributes['ИНН'] ?? null, // ИНН
    32.                     'kpp' => $attributes['КПП'] ?? null, // КПП
    33.                     'ogrn' => $attributes['ОГРН'] ?? null, // ОГРН
    34.                     'dateExtract' => $attributes['ДатаВып'] ?? null, //Дата выписки
    35.                     'dateOgrn' => $attributes['ДатаОГРН'] ?? null, //Дата присвоения ОГРН
    36.                     'kodopf' => $attributes['КодОПФ'] ?? null, // Код ОПФ
    37.                     'fullNameOpf' => $attributes['ПолнНаимОПФ'] ?? null, // Полное наименование ОПФ
    38.  
    39.                     /**
    40.                      * Возврат массива @okved
    41.                      * Информация об ОКВЭД
    42.                      * Массив в массиве
    43.                      */
    44.  
    45.                     'okved_dop' => $okved['СвОКВЭДДоп'] ?? null,
    46.                     'okved_main' => $okved['СвОКВЭДОсн'] ?? null,
    47.  
    48.                     /**
    49.                      * Сведения о наименовании
    50.                      */
    51.  
    52.                     'fullname' => $information['@attributes']['НаимЮЛПолн'] ?? null,
    53.                     'shortname' => $information['СвНаимЮЛСокр']['@attributes']['НаимСокр'] ?? null,
    54.  
    55.                     /**
    56.                      * Сведения образования юр. лица
    57.                      */
    58.  
    59.                     'create_data' => $create_at['@attributes']['ДатаОГРН'] ?? null,
    60.  
    61.                 ];
    Controller
    PHP:
    1. $model = new Companies();
    2.         $info = $model->ruInfoCompanie($inn);
    3.  
    4.         return view('pages.companies.info.ru.index', [
    5.             /**
    6.              * Основныые параметры
    7.              */
    8.  
    9.             'inn' => $info['inn'],
    10.             'kpp' => $info['kpp'],
    11.             'ogrn' => $info['ogrn'],
    12.             'dateExtract' => $info['dateExtract'],
    13.             'dateOgrn'=> $info['dateOgrn'],
    14.             'kodopf' => $info['kodopf'],
    15.             'fullNameOpf' => $info['fullNameOpf'],
    16.  
    17.             /**
    18.              * ОКВЭД return array
    19.              */
    20.             'okved_dop' => $info['okved_dop'],
    21.             'okved_main' => $info['okved_main'],
    22.  
    23.             /**
    24.              * Сведения о наименовании
    25.              */
    26.  
    27.             'fullname' => $info['fullname'],
    28.             'shortname' => $info['shortname'],
    29.  
    30.             /**
    31.              * Образовано юр. лицо
    32.              */
    33.  
    34.             'create_data' => $info['create_data'],
    35.         ]);

    Вопрос: как не дублировать значения в return и минимизировать код.
    Спасибо!
     
  2. kedrach

    kedrach Новичок

    С нами с:
    21 сен 2022
    Сообщения:
    14
    Симпатии:
    0
    View
    PHP:
    1. /**
    2. * Exmaple view
    3. */
    4. <td colspan="3">
    5.     <span class="text-muted fw-bold text-hover-primary">{{ $dateOgrn }}</span>
    6. </td>
     
    #2 kedrach, 21 сен 2022
    Последнее редактирование: 21 сен 2022
  3. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    861
    Симпатии:
    132
    Что-то мешает
    PHP:
    1. return view('pages.companies.info.ru.index', $info);
    написать?
     
  4. kedrach

    kedrach Новичок

    С нами с:
    21 сен 2022
    Сообщения:
    14
    Симпатии:
    0
    Опыт.

    Попробую.
     
  5. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    А нельзя в базу сложить так, тоб не надо было переименовывать? Ну и во вьюхе тоже, в принципе, никто не мешает эти ужасные русские индексы использовать
     
  6. kedrach

    kedrach Новичок

    С нами с:
    21 сен 2022
    Сообщения:
    14
    Симпатии:
    0
    Это json, лежит в базе именно json.
    --- Добавлено ---
    А есть разница переименовать или нет? Все равно значения доставать нужно.
    Или вы предлагаете вернуть массив, а затем до каждого элемента добираться через горы массивов?