Как установить Значок Группировки Панели задач

Это был интересный вызов, поэтому я настроил его на тестовой машине и решил. Несомненно, есть другие способы сделать это, но это работает, и штат и страна будут доступны для использования на верхнем уровне, как вы хотели.

Параметры не будут отображаться в дампе dd(), хотя они будут доступны для прямого доступа на верхнем уровне, и будет отображаться , если вы создадите дамп через JSON.

Я думаю, что самый простой способ помочь - это просто установить аксессоры на модели City. Затем, когда метод locations() вызывается из модели Services, все города имеют необходимую информацию.

Модель города:

protected $fillable=[
    'name',
    'state_id',
];

protected $appends = ['state_name', 'country_name'];

public function state() {
    return $this->hasOne(State::class, 'id', 'state_id');
}

public function getStateNameAttribute ()
{
    return $this->state->name;
}
public function getCountryNameAttribute ()
{
    return $this->state->country->name;
}

Обратите внимание на protected $appends = ['state_name', 'country_name'];. Это позволяет отображать эти дополнительные поля при выгрузке в JSON. Если вам просто нужен доступ к дополнительным полям (state_name и country_name), вам не нужна эта строка - вы можете извлечь поля из части массива уровня города сейчас, так как у нас есть аксессоры в городе модель.

В запрос теперь должна быть включена более активная загрузка, чтобы эти средства доступа не пытались получить имя из нулевого значения. (Вы должны добавить нулевую проверку в аксессор). Я предлагаю сразу сделать все это так:

$data = \App\Service::with(['locations' => function($query){
    $query->with(['state' => function($query){
        $query->with('country');
    }]);
}])->get();

Выполнение цикла for $data теперь даст вам все необходимое в городе. уровень. Например :

foreach($data as $service){
   echo "Service id: ".$service->id.": ";
   echo $service->name."<br/>";

   echo $service->locations->first()->name.", ";
   echo $service->locations->first()->state_name." -- in the country: ";
   echo $service->locations->first()->country_name;

   echo "<br/><br/><br/>";
}

Это успешно дает:

Service id: 1: Tax Services
Annapolis, Maryland -- in the country: USA

Service id: 2: Legal Services
Potomac, Maryland -- in the country: USA
7
задан Michael Damatov 21 October 2008 в 10:14
поделиться

3 ответа

Этот комментарий от Raymond Chen указывает, что значок прибывает из самого exe, я предложил бы использовать что-то как eXeScope, чтобы удостовериться, что Ваш значок приложения встраивается правильно, и, возможно, сравните его с другими exes, которые отображают правильное поведение, чтобы сделать отладку дельты.

3
ответ дан 7 December 2019 в 07:52
поделиться

Значок группы панели задач может быть установлен в реестре на на основание приложения.

Для проводника это было бы здесь:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\explorer.exe]
"TaskbarGroupIcon"="C:\Windows\Explorer.exe,13"
3
ответ дан 7 December 2019 в 07:52
поделиться

Иконка группы панели задач приложения может быть установлена двумя способами

  1. Через свойства проекта:

    Щелкните проект в проводнике решений → щелкните правой кнопкой мыши → выберите свойства → выберите вкладку Application → перейдите к resoruces и измените иконку по умолчанию и выберите новую иконку, сохраните и создайте.

  2. Через реестр (динамический):

    Вы должны создать ключ TaskbarGroupIcon и значение "файл иконки с путем" в разделе "HKEY_CURRENT_USER\SOFTWARE\Classes\Applications\<>" Если вышеуказанные ключи отсутствуют, вам необходимо создать

    RegistryKey RegKey = Registry.CurrentUser.OpenSubKey(
     "Software\\\\Classes\\\Applications\temp.exe",true); 
    RegKey.SetValue("TaskbarGroupIcon", "c:\temp.ico", RegistryValueKind.String);
    
1
ответ дан 7 December 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: