Multiple services of type

Radkos
Člen | 62
+
0
-

Ahoj, určitě se to tu už nesčetněkrát řešilo, ale mám problém při dědičnosti tříd. Mám třídu Settings a AdministrátorSettings. První bude mít metodu na čtení nastavení, druhá už bude moct nastavení měnit.
Jenže mi to vypíše chybu Multiple services of type App\Models\Settings found: 24_App_BackOfficeModule_Models_AdministratorSettings, 32_App_Models_Settings

Settings:

<?php
namespace App\Models;

class Settings extends BaseManager
{
    /**
     * @param $setting
     * @return bool
     */
    public function getSetting($setting){
        if($this->Db->table(self::TABLE_OPTIONS)->where('option_name', $setting)->count('*') > 0){
            return $this->Db->table(self::TABLE_OPTIONS)->where('option_name', $setting)->fetch()->option_value;
        }
        else{
            return false;
        }
    }
}

A AdministratorSettings(Zatím ještě nic neobsahuje):

<?php
namespace App\BackOfficeModule\Models;

use App\Models\Settings;

class AdministratorSettings extends Settings
{

}
Šaman
Člen | 2634
+
+3
-

Ty někde v configu vytváříš službu App\Models\Settings. Problém je, že máš dvě. Protože AdministratorSettings JE Settings.
Takže buď si vytvoř jednu abstrakní Settings a z toho poděď své dvě třídy, nebo jedné z nich v configu nastav autowired: no, což způsobí, že se nebude automaticky předávat vyšším službám (a budeš ji muset předávat ručně.)

Radkos
Člen | 62
+
+1
-

Šaman napsal(a):

Ty někde v configu vytváříš službu App\Models\Settings. Problém je, že máš dvě. Protože AdministratorSettings JE Settings.
Takže buď si vytvoř jednu abstrakní Settings a z toho poděď své dvě třídy, nebo jedné z nich v configu nastav autowired: no, což způsobí, že se nebude automaticky předávat vyšším službám (a budeš ji muset předávat ručně.)

Ono nakonec stačilo, když jsem z configu tu službu App\Models\Settings odebral uplně a funguje to.