Zend2 - Dostęp do routingu w modelu

0

Witam.
Mam powiedzmy Model User , oraz UsersTable , gdzie jest gateway do tej tabelki. I jest kolumna "avatar", gdzie podaję nazwę pliku.
Na chwilę obecną aby wyświetlić ten avatar, to w Kontrolerze buduję link z tej nazwy pliku.

Mam wiele miejsc gdzie muszę wyświetlić ten avatar, tak więc chciałbym ułatwić sobie pracę, jak i jakość kodu, by nie powtarzać tych samych czynności za każdym razem. Chciałbym bezpośrednio pobierać z modelu url do avatara ( $user->avatarURL)

Jak to zrobić profesjonalnie, i tak by nie tworzyć 5 kolejnych plików z 5 klasami, które extendują po 5 klasach, z czego te 5 plików trzeba zadeklarować w module.php itp...

W Modelu jest metoda extract, która rozdziela row na zmienne w klasie, ale znów w tej metodzie nie mam dostępu do routingu... w sumie do niczego.

3

W modelu tworzysz konstruktor, gdzie argumentem przekazywanym jest ServiceManager. Następnie w DI

                $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                $resultSetPrototype = new ResultSet();
                $resultSetPrototype->setArrayObjectPrototype(new Model\Projects\Tasks\Group($sm));
                return new TableGateway('projects_groups', $dbAdapter, null, $resultSetPrototype);

Czyli w konstruktorze otrzymasz wszystko co chcesz - wtedy pobierasz service odpowiedzialny za routing i generujesz linki wewnątrz modelu.

Tak w ostateczności wygląda konstruktor w Modelu:

use Zend\ServiceManager\ServiceManager;

    /**
     *
     * @var ServiceManager
     */
    protected $serviceManager;
    
    /**
     *
     * @var \Zend\Mvc\Controller\Plugin\Url 
     */
    protected $urlPlugin;
    
    /**
     * 
     * @param ServiceManager $serviceManager
     */
    public function __construct($serviceManager) {
        $this->serviceManager = $serviceManager;
        /* @var $pluginManager \Zend\Mvc\Controller\PluginManager */
        $pluginManager = $this->serviceManager->get('ControllerPluginManager');
        $this->urlPlugin = $pluginManager->get('url');
    }

Mam nadzieje że tobie, czyli sobie pomogłem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1