Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Controller Parameter Names Not Changing #784

Open
dboling19 opened this issue Feb 12, 2024 · 0 comments
Open

Controller Parameter Names Not Changing #784

dboling19 opened this issue Feb 12, 2024 · 0 comments

Comments

@dboling19
Copy link

dboling19 commented Feb 12, 2024

I originally asked in the KNP Paginator Component Github, but they sent me here.

| Bundle version | 5.9.0 | Components version | 3.6.0 | Symfony version | 6.4.2 | PHP version | 8.3.2

I have several pagination objects on a single page, so I want to change the respective parameter names for sorting and paging so they don't conflict. Changing the page parameter name works using "pageParameterName" (see code below for more details), however using the documented "sortFieldParameterName" and "SortDirectionParameterName" change nothing. The parameters are still the default "sort" and "direction", which I do not want to be changed in other parts of the application, only in this function.

I'm referring to this for documentation.

Location table function calls the initial page for the table, where Twig embeds the item table below.

   * Function to display all locations in the system
   * 
   * @author Daniel Boling
   */
  #[Route('/location/list/', name:'loc_list')]
  public function loc_list(Request $request): Response
  {
    if (isset($request->query->all()['loc_code']))
    {
      $loc = $this->loc_repo->find($request->query->all()['loc_code']);
    } else {
      $loc = new Location;
    }
    $loc_form = $this->createForm(LocationType::class, $loc);
    $loc_thead = [
      'loc_code' => 'Loc Code',
      'loc_desc' => 'Loc Desc',
      'loc_notes' => 'Loc Notes',
      'item_total_qty' => 'Item Total Qty.',
    ];
    $result = $this->loc_repo->findAll();
    $result = $this->paginator->paginate($result, $request->query->getInt('loc_page', 1), 1, ['sortFieldParameterName' => 'loc_sort', 'sortDirectionParameterName' => 'loc_direction', 'pageParameterName' => 'loc_page']);
    $normalized_locations = [];
    foreach ($result->getItems() as $item)
    {
      $normalized_locations[] = [
        'loc_code' => $item->getLocCode(),
        'loc_desc' => $item->getLocDesc(),
        'loc_notes' => $item->getLocNotes(),
        'item_total_qty' => $item->getItemQty(),
      ];
    }
    $result->setItems($normalized_locations);

    return $this->render('location/loc_list.html.twig', [
      'locations' => $result,
      'loc_thead' => $loc_thead,
      'form' => $loc_form,
    ]);
  }

Item Table Fragment. Is called using Twig controller embedding.

   * Fetches selected location's items for template fragment
   * 
   * @author Daniel Boling
   */
  public function loc_items_list(Request $request, ?string $loc_code, ?int $item_page = 1): Response
  {
    $loc = $this->loc_repo->find($loc_code);
    $item_thead = [
      'item_code' => 'Item Code',
      'item_desc' => 'Item Desc',
      'item_unit' => 'Item Unit',
      'item_notes' => 'Item Notes',
      'item_exp_date' => 'Item Exp. Date',
      'item_qty' => 'Item Total Qty.',
    ];
    // to autofill form fields, or leave them null.
    $result = $this->item_repo->findByLoc($loc_code);
    $result = $this->paginator->paginate($result, $item_page, 10, ['pageParameterName' => 'item_page', 'sortParameterName' => 'item_sort', 'sortDirectionParameterName' => 'item_direction']);
    $normalized_items = [];
    foreach ($result->getItems() as $item)
    {
      $normalized_items[] = [
        'item_code' => $item->getItemCode(),
        'item_desc' => $item->getItemDesc(),
        'item_notes' => $item->getItemNotes(),
        'item_exp_date' => $item->getItemExpDate(),
        'item_qty' => $item->getItemQty(),
        'item_unit' => $item->getItemUnit()->getUnitCode(),
      ];
    }
    $result->setItems($normalized_items);
    return $this->render('location/item_table.html.twig', [
      'items' => $result,
      'item_thead' => $item_thead,
    ]);
  }

Each table page parameter should have the respective name, which is working. The sort parameters should change as well, in the same way, however, they are not. What am I missing?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant