2017-02-23 51 views
0

Thelia новичок здесь. Я просто пытаюсь запросить категорию по ее (английскому) URL-адресу. Я могу получить RewritingUrlQuery, чтобы найти правильный номер rewriting_url, но я не могу понять, как включить его в CategoryQuery.Thelia: Как я могу запросить категории по URL-адресу?

Вот что я до сих пор:

public function showAction($slug) { 
    $urlFilter = RewritingUrlQuery::create() 
    ->filterByUrl($slug); 

    $category = CategoryQuery::create() 
    ->filterBy('url', $urlFilter) 
    ->findOne(); 

Не удивительно, что это не удается с сообщением об ошибке "Неизвестный URL столбца в модели Thelia \ Model \ Категория". Мне интересно, есть ли метод CategoryQuery, который я должен использовать, кроме filterBy, или несколько иной подход к запросам категорий? Я не могу представить, что Thelia/Symfony не предоставляет способ сделать что-то такое простое ...

+0

Можете ли вы добавить более подробную информацию? Имеет ли категория поле пули? что такое thelia? Что такое фильтр URL? – goto

ответ

1

Это оказалось довольно простым, как я и подозревал! :)

я просто должен был получить viewId (идентификатор категории, представленной в URL) из возвращенного RewritingUrl объекта, а затем использовать этот идентификатор в CategoryQuery:

$urlFilter = RewritingUrlQuery::create() 
    ->filterByView('category') 
    ->filterByUrl($slug) 
    ->findOne(); 

$category = CategoryQuery::create() 
    ->filterById($urlFilter->getViewId()) 
    ->findOne(); 

Обратите внимание, что здесь я также добавили вызов filterByView('category') в первую цепочку методов, чтобы указать, что я действительно интересуюсь только URL-адресами.