#symfony1 #symfony-1.4
#symfony1 #symfony-1.4
Вопрос:
Как я могу передать объект запроса методу doJoin, который настроен в generator.yml?
generator.yml:
generator:
param:
config:
list:
table_method: doJoin
ItemTable.class.php:
public static function doJoin(Doctrine_Query $q)
{
$rootAlias = $q->getRootAlias($q);
return $q->select($rootAlias.'.*, p.currency_code, p.customer_price')
->innerJoin($rootAlias.'.Price p')
->where('p.currency_code = 'USD'');
}
Ответ №1:
Вы можете переопределить метод buildQuery()
в actions.class.php чтобы принять параметр запроса ...->$table_method($query, $this->getRequest()
:
protected function buildQuery()
{
$tableMethod = $this->configuration->getTableMethod();
$query = Doctrine::getTable('CLASS_NAME')
->createQuery('a');
if ($tableMethod)
{
$query = Doctrine::getTable('CLASS_NAME')->$table_method($query, $this->getRequest());
}
$this->addSortQuery($query);
$event = $this->dispatcher->filter(new sfEvent($this, 'admin.build_query'), $query);
$query = $event->getReturnValue();
return $query;
}
Затем вы меняете ItemTable.class.php
:
public static function doJoin(Doctrine_Query $q, sfWebRequest $request)
Комментарии:
1. Ошибка: не удалось найти класс CLASS_NAME
2. я думаю, вам нужно изменить
CLASS_NAME
реальное имя вашего классаItem
.
Ответ №2:
Вы можете использовать:
sfContext::getInstance()->getRequest()->getParameter('whatever_you_want');
Комментарии:
1. хм … он возвращает null: sfContext::getInstance()->GetRequest()->getParameter(‘main_item.filters’). Как вы видите, я пытаюсь получить значение из filter .