Symfony2: лучший способ получить данные из другого пакета? - PullRequest
0 голосов
/ 15 января 2012

Я новичок в symfony2, и есть некоторые вещи, которые я не понимаю прямо сейчас.В этом случае я хочу отобразить все альбомы группы или исполнителя.Если пользователь вошел в систему, я хочу отобразить на той же странице, если один альбом находится в коллекции этого пользователя или нет.

У меня есть разные пакеты, такие как "ArtistBundle", "UserBundle", "AlbumBundle"и т. д. Поскольку информация, относящаяся к пользователю, на самом деле не относится к ArtistBundle (" разделение задач "), я хочу получить информацию из UserBundle.

Сейчас я вижу только два способа сделать это:

<?php
namespace Acme/ArtistBundle/Controller;
use Acme/UserBundle/User

public function indexAction()
{
    ...
    $user = new User($userId);
    $collectionInfo = $user->checkArtistAlbums($artistId);
    ...
}

Это решение может работать, но оно усложняет юнит-тесты, поскольку я не использую внедрение зависимостей (что, я думаю, было бы правильным способом).

Другая возможность - встраиваниеконтроллер UserBundle в шаблоне.Что не может быть сделано, так как мне нужна информация непосредственно в выходных данных ArtistBundle.

Так что же будет «лучшим опытом» здесь?Определение сервиса UserBundle?Каким-то образом настроить ArtistBundle, чтобы в конструкции объекта был установлен объект UserBundle?

Ответы [ 2 ]

1 голос
/ 15 января 2012

Разделение интересов - это разные связки для разных вещей. Ваш контроллер не может отделиться, ему нужно объединить разные вещи, чтобы сделать игру.

Но связки все еще разделены. Поэтому, даже если вы думаете, что это не разделено, потому что вы объединяете вещи в своем действии контроллера, происходит обратное.

Ваш контроллер помогает вам разделять вещи, объединяя их, но только используя отдельные связки.

0 голосов
/ 15 января 2012

По моему мнению, я бы создал myProjectBundle.Затем вы создаете папку Entity и там вы создаете папки Исполнителя альбома и Пользователь.Внутри вы создаете Doctrine для каждой таблицы (альбома, atrtis, пользователя).

Что я хотел бы сделать, это вызвать службу (создать папку службы и класс службы) в моем контроллере (loginAction), которая будет извлекать необходимую информацию (получить всеальбомы и исполнитель для текущего пользователя).Затем используйте шаблон для рисования страницы входа в систему и используйте другой шаблон для отображения остальной информации.

...