# |
Jun 13th 2021, 11:51 |
kevin.pfeifer |
blobo, I would guess there is either • a notice or warning being outputted before the pdf is rendered (check your log directory) or • you unintentionally echo some string before the pdf is being rendered |
# |
Jun 13th 2021, 11:49 |
admad |
No. |
# |
Jun 13th 2021, 11:14 |
david |
is it possible to load an element out of the default "Element" location? |
# |
Jun 13th 2021, 11:13 |
david |
morning |
# |
Jun 13th 2021, 08:45 |
blobo |
help would be much appreciated |
# |
Jun 13th 2021, 08:45 |
blobo |
: Cannot modify header information - headers already sent |
# |
Jun 13th 2021, 08:45 |
blobo |
hello, help needed. I generate pdf with errors: <b>Warning</b> (2)</a> |
# |
Jun 13th 2021, 07:37 |
kevin.pfeifer |
ah, good to know thx :) |
# |
Jun 13th 2021, 07:36 |
admad |
@kevin.pfeifer returning a response instance from the action automatically disables auto rendering, so doing so explicitly is redundant. |
# |
Jun 13th 2021, 07:35 |
admad |
More like black fungus in these covid times. |
# |
Jun 12th 2021, 22:39 |
ndm |
@davinci Never echo data from a controller and/or die in it, this completely breaks CakePHP's execution flow, it breaks headers, it can cause data to be cut off, it messes up the testing environment, etc. If you see someone doing that, make them aware that what they are doing is wrong, and that it will bring them 7 years of bad luck... and foot fungus! |
# |
Jun 12th 2021, 19:16 |
kevin.pfeifer |
well `$this->autoRender = false;` prevents the view from being rendering and therefore all your logic is just in the controller |
# |
Jun 12th 2021, 19:07 |
davinci |
ah, so no need to `echo ... exit();` - just return the response. That seems cleaner |
# |
Jun 12th 2021, 18:56 |
kevin.pfeifer |
if its better/worse or something else I have no idea |
# |
Jun 12th 2021, 18:56 |
kevin.pfeifer |
I like doing that ```$response = $this->getResponse(); $this->autoRender = false; return $response->withType( 'application/json' ) ->withStringBody( json_encode( $results ) );``` |
# |
Jun 12th 2021, 18:54 |
davinci |
I've always used a view, but see someone using an exit, and thought... hmm, maybe that's faster? |
# |
Jun 12th 2021, 18:54 |
davinci |
In an ajax call, is it better to echo json data then exit right from the controller, or use an ajax view? |
# |
Jun 11th 2021, 15:30 |
admad |
Mention that HTTP_HOST was set through phpunit.xml |
# |
Jun 11th 2021, 15:28 |
admad |
@a.vanniel plz open an issue on the cakephp/app repo. |
# |
Jun 11th 2021, 15:28 |
admad |
We could modify that line to first check for HTTP_HOST and use "localhost" only of it's not available. |
# |
Jun 11th 2021, 15:15 |
ndm |
Sure, generally these settings would allow that, but CakePHP does what CakePHP does. Respecting those configs would probably cause a lot of trouble with people that touch the superglobals directly, being in their apps or in their tests. Anyways, godspeed :upside_down_face: |
# |
Jun 11th 2021, 15:10 |
a.vanniel |
Thanks @ndm! |
# |
Jun 11th 2021, 15:10 |
a.vanniel |
I have commented out the offending line though and now the test succeeds because the expected url was set... |
# |
Jun 11th 2021, 15:10 |
a.vanniel |
At least, that is what I understood of the xml file... |
# |
Jun 11th 2021, 15:09 |
a.vanniel |
Using the phpunit.xml those super globals could be set and thus have the tests approach more closely the sort of real life situations... |
# |
Jun 11th 2021, 15:08 |
ndm |
Probably... I think all the globals for the server request object are being filled with custom data in integration tests, ie the PHP supergobals are not being touched. |
# |
Jun 11th 2021, 15:06 |
a.vanniel |
or it actually defeats the purpose of the server variable as well. |
# |
Jun 11th 2021, 15:06 |
a.vanniel |
It kinda defeats the purpose of the HTTP_HOST environment key in the phpunit.xml I guess. |
# |
Jun 11th 2021, 15:06 |
ndm |
I think there's also places internally in the core where `App.fullBaseUrl` is being overwritten... so, you might not be off the hook if you'd wanted to use your custom host setting. |
# |
Jun 11th 2021, 15:04 |
ndm |
Actually, yes, it's the default :) Didn't remember that one. |
# |
Jun 11th 2021, 15:04 |
ndm |
Good question.... |
# |
Jun 11th 2021, 15:03 |
a.vanniel |
Is that per default? Or do I have to start kicking one of my colleagues here? |
# |
Jun 11th 2021, 15:02 |
a.vanniel |
wow. |
# |
Jun 11th 2021, 15:02 |
a.vanniel |
wait... I found it in the tests\bootstrap.php file... |
# |
Jun 11th 2021, 15:02 |
a.vanniel |
I did a debug of env('HTTP_HOST') in the controller I am testing and I get this: http://pearson.presenter.local so that is what it should be, |
# |
Jun 11th 2021, 15:00 |
a.vanniel |
bootstrap_cli.php does not overwrite it.. that line is commented out it only contains the lines to configure the debug and error log file names. |
# |
Jun 11th 2021, 14:59 |
ndm |
So `env('HTTP_HOST)` returns the expected result? Then maybe check if the option is being overwritten in `bootstrap_cli.php` |
# |
Jun 11th 2021, 14:58 |
a.vanniel |
FYI the fullBaseUrl setting in the config file of the application is set to false... so this should use the HTTP_HOST |
# |
Jun 11th 2021, 14:57 |
a.vanniel |
welll. this is rather weird... $ref is set to the url I provided, however the $base is set to http://localhost eventhough I have set this in the phpunit.xml: ```<server name="HTTP_HOST" value="http://pearson.presenter.local" />``` and this actually does work ... so I wonder why $base would be set to localhost ... and since the default is to return a local address... well, this probably fails since the base is different... |
# |
Jun 11th 2021, 14:54 |
ndm |
And I guess debug `$ref` too while you're at it, just to make sure a value is actually set. |
# |
Jun 11th 2021, 14:53 |
ndm |
Ok, now try a `debug($base)` in the `referer()` method to see what is being expected. |