Transfer variables between controllers in 3.5


#1

Calling a controller inside a controller in cakePHP 3.5:

return $this->redirect([‘controller’ => ‘reports’, ‘action’ => ‘show/’ . $report . ‘?filter=’ . urlencode($filter)]);

The variable $report is converted from ‘Konto_abgelaufen’ to ‘konto-abgelaufen’ inside the method show in controller ‘Reports’.

Can I avoid that? I need the content of $report in excat spelling.


#2

As this is just a param, you can convert back the value inside the view-function using Inflector.

If this is a general issue for you: as far as I know you can change the Inflector that the Router is using in general to avoid this behavior (but this might cause other problems).

Btw.: You don’t have to use ‘?filter=’ to build your args manually, but can simply use

return $this->redirect([‘controller’ => ‘reports’, ‘action’ => ‘show’, $report, ‘?’ => [‘filter’ => $filter]]);

instead.

Best regards


#3

Thanks for that hints!
I tried to re-convert the string ‘konten-abgelaufen’ on https://inflector.cakephp.org/, but there seems to be no way back to ‘Konten_abgelaufen’ from ‘konten-abgelaufen’ using Inflector.


#4

The “underscore” variant seems to (nearly) do what you need (except of the first character).

However - have you tried if the redirect-variant that I have posted before produces the same behavior? (Please note, the ‘,’ between ‘show’ and $report)


#5

the redirect variant works, thank you!