Я использую paginator и fosJsRouting для создания формы с фильтрами.
Я пытаюсь создать фильтр, чтобы показывать только результаты в соответствии с выбранным месяцем. Итак, на домашней странице мы выбираем месяц, который расходуется в контроллере, затем я хотел бы передать его в запросе на лету.
Я не могу определить, что если переменная равна нулю, то выберите все.
Спасибо за помощь
Вот мой индекс контроллера:
public function indexAction( Request $request, $page, $limit, $month ) {
$em = $this->getDoctrine()->getManager();
if(isset($_GET['month']))
$month = $_GET['month'];
else
$month = "NULL";
$debits = $em->getRepository( 'BudgetBundle:Debit' )->getAmounts($this->getUser(), $month);
// Paramerage de la limite d'affichage par page
if(isset($_GET['limit'])) $limit = $_GET['limit'];
##################################################################################### START_DEBIT
if ( $page == '' ) // Evite l'affichage de la page numero 2 sur l'index
{
$page = 1;
}
$paginator = $this->get( 'knp_paginator' );
$pagination = $paginator->paginate(
$debits, /* query NOT result */
$request->query->getInt( 'page', $page )/*page number*/,
$limit/*limit per page*/
);
// Calcul du Total de dépense par page
$total = [];
foreach ( $pagination->getItems() as $item ) {
$total[] = $item->getAmount();
}
$totalAmount = [];
for ( $i = 0; $i < count( $debits->getQuery()->getResult() ); $i ++ ) {
$totalAmount[] = $debits->getQuery()->getResult()[ $i ]->getAmount();
}
##################################################################################### END_DEBIT
return $this->render( 'BudgetBundle:Views:index.html.twig', [
'pagination' => $pagination,
'total' => array_sum( $total ),
'montantTotal' => array_sum( $totalAmount )
] );
}
Построитель запросов:
public function getAmounts($user, $month){
$qb = $this->createQueryBuilder('d')
->leftJoin('d.company', 'company')
->addSelect('company')
->where('d.user = :user')
->setParameter('user', $user)
// ->andWhere( $month == NULL ? 'd.date = IS NOT NULL' : 'd.date = :month' )
// ->setParameter('month', $month)
->orderBy('d.date', 'DESC');
var_dump($month);
var_dump($qb->getQuery()->getDQL());
return $qb;
}
Мое мнение:
Choisissez le mois
{% if app.request.query.get("month") %}
{{ app.request.query.get("month") }}
{% endif %}
Janvier
Fevrier
Js:
$('#month').change(function () {
var url = Routing.generate('budget_homepage', {'month':$('#month').find(":selected").text()});
window.location.href = url;
});
И маршрут:
budget_homepage:
path: /{page}
defaults: { _controller: BudgetBundle:Budget:index, page: 1, limit: 5, month: null }
requirements:
page: \d*
limit: \d*
options:
expose: true
Подробнее здесь: https://stackoverflow.com/questions/436 ... -paginator
Разбивка на страницы по месяцам Symfony / Paginator ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1770547620
Anonymous
Я использую paginator и fosJsRouting для создания формы с фильтрами.
Я пытаюсь создать фильтр, чтобы показывать только результаты в соответствии с выбранным месяцем. Итак, на домашней странице мы выбираем месяц, который расходуется в контроллере, затем я хотел бы передать его в запросе на лету.
Я не могу определить, что если переменная равна нулю, то выберите все.
Спасибо за помощь
Вот мой индекс контроллера:
public function indexAction( Request $request, $page, $limit, $month ) {
$em = $this->getDoctrine()->getManager();
if(isset($_GET['month']))
$month = $_GET['month'];
else
$month = "NULL";
$debits = $em->getRepository( 'BudgetBundle:Debit' )->getAmounts($this->getUser(), $month);
// Paramerage de la limite d'affichage par page
if(isset($_GET['limit'])) $limit = $_GET['limit'];
##################################################################################### START_DEBIT
if ( $page == '' ) // Evite l'affichage de la page numero 2 sur l'index
{
$page = 1;
}
$paginator = $this->get( 'knp_paginator' );
$pagination = $paginator->paginate(
$debits, /* query NOT result */
$request->query->getInt( 'page', $page )/*page number*/,
$limit/*limit per page*/
);
// Calcul du Total de dépense par page
$total = [];
foreach ( $pagination->getItems() as $item ) {
$total[] = $item->getAmount();
}
$totalAmount = [];
for ( $i = 0; $i < count( $debits->getQuery()->getResult() ); $i ++ ) {
$totalAmount[] = $debits->getQuery()->getResult()[ $i ]->getAmount();
}
##################################################################################### END_DEBIT
return $this->render( 'BudgetBundle:Views:index.html.twig', [
'pagination' => $pagination,
'total' => array_sum( $total ),
'montantTotal' => array_sum( $totalAmount )
] );
}
Построитель запросов:
public function getAmounts($user, $month){
$qb = $this->createQueryBuilder('d')
->leftJoin('d.company', 'company')
->addSelect('company')
->where('d.user = :user')
->setParameter('user', $user)
// ->andWhere( $month == NULL ? 'd.date = IS NOT NULL' : 'd.date = :month' )
// ->setParameter('month', $month)
->orderBy('d.date', 'DESC');
var_dump($month);
var_dump($qb->getQuery()->getDQL());
return $qb;
}
Мое мнение:
Choisissez le mois
{% if app.request.query.get("month") %}
{{ app.request.query.get("month") }}
{% endif %}
Janvier
Fevrier
Js:
$('#month').change(function () {
var url = Routing.generate('budget_homepage', {'month':$('#month').find(":selected").text()});
window.location.href = url;
});
И маршрут:
budget_homepage:
path: /{page}
defaults: { _controller: BudgetBundle:Budget:index, page: 1, limit: 5, month: null }
requirements:
page: \d*
limit: \d*
options:
expose: true
Подробнее здесь: [url]https://stackoverflow.com/questions/43638521/paginate-by-month-symfony-paginator[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия