PHPMaker version: 2026.14
Previous working version: PHPMaker 2025
Framework: Symfony (PHPMaker 2026 generated project)
I am experiencing what appears to be a regression in the Page_Redirecting server event after migrating a working PHPMaker 2025 project to PHPMaker 2026.
I have a database View named Tickets_Abiertos. Users work from the Tickets_Abiertos List page, but Add and Edit operations must actually be performed using the pages of another table named Ticket.
In PHPMaker 2025, I implemented this using the Page_Redirecting event of the Add/Copy Page of Tickets_Abiertos:
function Page_Redirecting(?string &$url): void
{
$url = "ticketadd";
}
For Edit, I used the equivalent event on the Edit Page:
function Page_Redirecting(?string &$url): void
{
$url = "ticketedit/" . $this->ID->CurrentValue;
}
Behavior in PHPMaker 2025
This works correctly.
For example, on the Tickets_Abiertos List page, the Add button itself still points to:
ticketsabiertosadd
This can be verified by hovering over the Add button in the browser.
When the button is clicked, PHPMaker enters the Tickets_Abiertos Add page and the Page_Redirecting event redirects the request to:
ticketadd
Therefore, the final page displayed to the user is ticketadd.
The same behavior works for Edit: the user initially enters the Tickets_Abiertos Edit page and Page_Redirecting redirects to:
ticketedit/{ID}
Behavior in PHPMaker 2026.14
After migrating the same project to PHPMaker 2026.14, this behavior no longer works.
Clicking Add requests:
/ticketsabiertosadd
The Page_Redirecting event is executed, and $url can be changed successfully, but PHPMaker does not perform the redirect to ticketadd.
To verify this, I temporarily changed the event to:
function Page_Redirecting(?string &$url): void
{
Log("Tickets_Abiertos Add Page_Redirecting - URL original: " . $url);
$url = "ticketadd";
Log("Tickets_Abiertos Add Page_Redirecting - URL nueva: " . $url);
}
The PHPMaker/Symfony log shows:
[2026-09-02T11:33:33.444148-06:00] app.DEBUG:
Tickets_Abiertos Add Page_Redirecting - URL original:
[2026-09-02T11:33:33.444372-06:00] app.DEBUG:
Tickets_Abiertos Add Page_Redirecting - URL nueva: ticketadd
So the event is definitely executed and $url is successfully changed to ticketadd. However, the browser remains on /ticketsabiertosadd; no redirect to /ticketadd occurs.
The request log also confirms that the request path being processed is /ticketsabiertosadd.
Generated PHPMaker 2026 code
I also inspected the generated PHPMaker 2026 code.
The generated terminate() method calls pageRedirecting():
if (!IsApi() && method_exists($this, "pageRedirecting")) {
$this->pageRedirecting($url);
}
and later contains:
if ($url !== null) {
// ...
$this->Response = new RedirectResponse(
GetUrl($url),
Config("REDIRECT_STATUS_CODE")
);
}
This makes the behavior particularly confusing because Page_Redirecting is being called and $url is being changed by reference, but the redirect that occurred in PHPMaker 2025 does not occur in this PHPMaker 2026 scenario.
Workaround found
I found a workaround for PHPMaker 2026 by changing the generated target URLs before the List page renders them.
For Add, in Tickets_Abiertos List Page -> Page_Load:
function Page_Load(): void
{
$this->AddUrl = "ticketadd";
}
This works correctly in PHPMaker 2026.14.
For Edit, in Tickets_Abiertos List Page -> Row_Rendering:
function Row_Rendering(): void
{
if (!IsEmpty($this->ID->CurrentValue)) {
$this->EditUrl = "ticketedit/" . $this->ID->CurrentValue;
}
}
This also works correctly.
However, this changes the implementation compared with PHPMaker 2025. Instead of allowing the request to enter ticketsabiertosadd / ticketsabiertosedit and redirecting it using Page_Redirecting, the workaround changes the List page links before the user clicks them.
Expected result
Since the same Page_Redirecting code works in PHPMaker 2025, and the event is still available in PHPMaker 2026, I would expect:
function Page_Redirecting(?string &$url): void
{
$url = "ticketadd";
}
to redirect the request to ticketadd in PHPMaker 2026 as it did in PHPMaker 2025.
Actual result
Page_Redirecting is executed and $url is changed to ticketadd, but the browser remains on ticketsabiertosadd.
The equivalent Edit scenario behaves the same way, which is why I had to replace it with the Row_Rendering workaround shown above.
Could you please confirm whether this is an intentional behavior change in PHPMaker 2026 due to the new Symfony request/response lifecycle, or a regression in Page_Redirecting?
If it is intentional, what is the recommended PHPMaker 2026 replacement for the PHPMaker 2025 behavior?