# |
Jul 3rd 2018, 10:48 |
james.phillips |
I didnt have it in my routes to begin with as it wasnt needed but adding fixed that issue...which is confusing as its not needed. |
# |
Jul 3rd 2018, 10:45 |
james.phillips |
makes sense but when I remove it I get the error array (\n 'controller' => 'CrmEventSubtypes',\n '_method' => 'GET',\n 'action' => 'view',\ is missing when using $event->getSubject()->query->contain([ |
# |
Jul 3rd 2018, 10:34 |
bravo-kernel |
does that make sense? |
# |
Jul 3rd 2018, 10:33 |
bravo-kernel |
Users will not be able to access `/cities` but will get the contained data when accessing `/countries` |
# |
Jul 3rd 2018, 10:33 |
bravo-kernel |
then `Cities` does not have to be in your routes.php |
# |
Jul 3rd 2018, 10:33 |
bravo-kernel |
However, let's say you want to include/contain `Cities` in the index action for countries |
# |
Jul 3rd 2018, 10:32 |
bravo-kernel |
e.g. if you want to be able to access `/countries`... `Countries` needs to be in your route.php |
# |
Jul 3rd 2018, 10:32 |
bravo-kernel |
@james.phillips you only need to add stuff to `$API_RESOURCES` in `routes.php` if you want to access that model directly |
# |
Jul 3rd 2018, 10:22 |
josbeir |
$routes->plugin('Products', [ '_namePrefix' => 'products:' ] |
# |
Jul 3rd 2018, 10:21 |
josbeir |
hmm, shoudln't the _namePrefix argument work on $routes->plugin routes ? |
# |
Jul 3rd 2018, 09:33 |
slackebot4 |
} }); }); |
# |
Jul 3rd 2018, 09:33 |
james.phillips |
Router::prefix('api', function ($routes) { //$routes->setExtensions(['json']); $routes->prefix('v1', function ($routes) { //valid api routes $API_RESOURCES = [ 'CrmContacts', 'CrmEvents', ]; foreach ($API_RESOURCES as $apiResource) { $routes->resources($apiResource, [ 'inflect' => 'dasherize' ]); |
# |
Jul 3rd 2018, 09:32 |
james.phillips |
ok.. i fixed it but im confused... |
# |
Jul 3rd 2018, 09:29 |
slackebot4 |
associated correctly....Maybe its somethign outside of this code messing it up |
# |
Jul 3rd 2018, 09:29 |
james.phillips |
If I put a typo in on purpose i get "detail": "CrmEvents is not associated with CrmEventSubtype" Correct...If I put the correct name in I get A route matching \"array (\n 'controller' => 'CrmEventSubtypes',\n '_method' => 'GET',\n 'action' => 'view',\n 0 => 2,\n 'prefix' => 'api/v1',\n 'plugin' => NULL,\n '_ext' => NULL,\n)\" could not be found. ...... Thou....futher down the debug I can see event data with the subtype data |
# |
Jul 3rd 2018, 09:26 |
james.phillips |
Do I need to tell my api CrmEvents controller where the CrmEventsSubypes model is...I assumed it would already know |
# |
Jul 3rd 2018, 09:20 |
josbeir |
@tim hahaha |
# |
Jul 3rd 2018, 09:18 |
james.phillips |
there isnt a CrmEventSubtypes controller as its just a model... Its a related to CrmEvents and I have a controller within the api codebase for CrmEvents... Events model is working so I assume $event->getSubject()->query->contain([ 'CrmEventSubtypes', ]); would just bring back that related data |
# |
Jul 3rd 2018, 09:16 |
bernat |
Ok, thanks. I'm doing it but some piece is missing. |
# |
Jul 3rd 2018, 09:15 |
bernat |
Thanks @neon1024. So I presume Cakephp has no support for this. |
# |
Jul 3rd 2018, 09:15 |
neon1024 |
I don’t know how to use the Response object to stream, but I bet you can. Probably best check out the PSR7 standard to see what the functionality is |
# |
Jul 3rd 2018, 09:15 |
neon1024 |
This is what I used, and I streamed directly from the Controller, without using the Response object |
# |
Jul 3rd 2018, 09:14 |
neon1024 |
https://www.sitepoint.com/php-streaming-output-buffering-explained/ |
# |
Jul 3rd 2018, 09:14 |
bernat |
I know how to do it without using the response object but I'm wondering how to use it for that if possible. |
# |
Jul 3rd 2018, 09:14 |
bernat |
but no response object |
# |
Jul 3rd 2018, 09:13 |
neon1024 |
No, I used a Cake Controller |
# |
Jul 3rd 2018, 09:13 |
james.phillips |
I assume if i do query->contain([ then it looks at related models rather than controllers |
# |
Jul 3rd 2018, 09:13 |
bernat |
So you used vanilla PHP for that, did you? |
# |
Jul 3rd 2018, 09:13 |
neon1024 |
@bernat I did it once for a Javascript stream, and I just used the `ob_flush` methods, let me see if I can find the code |
# |
Jul 3rd 2018, 09:13 |
james.phillips |
thanks @bravo-kernel. The tables and entites are setup and work if I go throu the main app rather than the api... The api has its own versions of the some of the controllers.. I will have a think |
# |
Jul 3rd 2018, 09:12 |
bernat |
There's a CallbackStream example but I think it returns the full content in one call. |
# |
Jul 3rd 2018, 09:11 |
bernat |
Yes |
# |
Jul 3rd 2018, 09:11 |
neon1024 |
Oh, you want to stream the file? |
# |
Jul 3rd 2018, 09:11 |
bernat |
@neon1024, which example there allows to send the file contents as they are generated? |
# |
Jul 3rd 2018, 09:10 |
bravo-kernel |
@james.phillips make sure your tables and entities are in place and... that you have added all required controllers to the ApiResoures in routes.php |
# |
Jul 3rd 2018, 09:09 |
neon1024 |
https://book.cakephp.org/3.0/en/controllers/request-response.html#sending-files |
# |
Jul 3rd 2018, 09:08 |
bernat |
Hi. I'm trying to send a file in the http response so that it's downloaded by the browser. The file will be big and I want to send it as I'm building it. How would it be done in CakePHP3? |
# |
Jul 3rd 2018, 09:08 |
james.phillips |
and get A route matching \"array (\n 'controller' => 'CrmEventSubtypes' well CrmEventSubtypes is a model related to events so not sure why its looking as it as a controller.. |
# |
Jul 3rd 2018, 09:07 |
james.phillips |
I added $this->Crud->on('beforeFind', function (Event $event) { $event->getSubject()->query->contain([ 'CrmEventSubtypes', ]); }); |
# |
Jul 3rd 2018, 09:01 |
james.phillips |
im getting a werid error that implies ive done something stupid elsewhere... |
# |
Jul 3rd 2018, 08:59 |
tim |
Both should work anyway |