# |
Jul 20th 2021, 20:43 |
jadelbe418 |
Cool, I will look at how that works. Thanks |
# |
Jul 20th 2021, 20:41 |
kevin.pfeifer |
well maybe you can check something from the 3.X version of the CsrfProtectionMiddleware https://github.com/cakephp/cakephp/blob/3.x/src/Http/Middleware/CsrfProtectionMiddleware.php |
# |
Jul 20th 2021, 20:41 |
jadelbe418 |
I am going based off on these instructions: https://book.cakephp.org/3/en/controllers/middleware.html |
# |
Jul 20th 2021, 20:41 |
jadelbe418 |
Yup |
# |
Jul 20th 2021, 20:41 |
kevin.pfeifer |
thats why you used the __invoke method |
# |
Jul 20th 2021, 20:40 |
jadelbe418 |
The middlware interface seems to be used on the 4.x docs and not 3.x |
# |
Jul 20th 2021, 20:40 |
kevin.pfeifer |
ah ok, cakephp 3 didn’t have that interface yet |
# |
Jul 20th 2021, 20:40 |
kevin.pfeifer |
oh ok |
# |
Jul 20th 2021, 20:39 |
jadelbe418 |
@kevin.pfeifer I am sorry, I should have mentioned the version number of cake I am working with. The application I am on is on 3 |
# |
Jul 20th 2021, 20:37 |
jadelbe418 |
I will play with that and see how it works. |
# |
Jul 20th 2021, 20:37 |
jadelbe418 |
Great, thanks! |
# |
Jul 20th 2021, 20:36 |
kevin.pfeifer |
see e.g. https://github.com/cakephp/cakephp/blob/master/src/Http/Middleware/CsrfProtectionMiddleware.php each middleware should at least implement the `MiddlewareInterface` and therefore the `process($request, $handler)` funciton |
# |
Jul 20th 2021, 20:35 |
jadelbe418 |
I assume that I am not putting it in the middle ware que in the right spot. |
# |
Jul 20th 2021, 20:34 |
slackebot2 |
route caching // pass null as cacheConfig, example: `new RoutingMiddleware($this)` // you might want to disable this cache in case your routing is extremely simple ->add(new RoutingMiddleware($this, '_cake_routes_')); return $middlewareQueue; } }``` |
# |
Jul 20th 2021, 20:34 |
slackebot2 |
// and make an error page/response ->add(ErrorHandlerMiddleware::class) // Handle plugin/theme assets like CakePHP normally does. ->add(new AssetMiddleware([ 'cacheTime' => Configure::read('Asset.cacheTime') ])) ->add(new CustomFieldsMiddleware()) // Add routing middleware. // Routes collection cache enabled by default, to disable |
# |
Jul 20th 2021, 20:34 |
jadelbe418 |
```class Application extends BaseApplication { /** * Setup the middleware queue your application will use. * * @param MiddlewareQueue $middlewareQueue The middleware queue to setup. * @return MiddlewareQueue The updated middleware queue. */ public function middleware($middlewareQueue): MiddlewareQueue { $middlewareQueue // Catch any exceptions in the lower layers, |
# |
Jul 20th 2021, 20:33 |
slackebot2 |
ResponseInterface A response */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next): ResponseInterface { print_r($response); return $next($request, $response); } }``` |
# |
Jul 20th 2021, 20:33 |
jadelbe418 |
```<?php namespace App\Middleware; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; /** * CustomFields middleware */ class CustomFieldsMiddleware { /** * Invoke method. * * @param ServerRequestInterface $request The request. * @param ResponseInterface $response The response. * @param callable $next Callback to invoke the next middleware. * @return |
# |
Jul 20th 2021, 20:33 |
jadelbe418 |
@kevin.pfeifer Cool, thanks! So I was looking at Middleware. It seems that I do am not able to get a body in the response when I attach it to the base application like this: |
# |
Jul 20th 2021, 19:58 |
kevin.pfeifer |
You can do both “pre-processing” (a request) and “post-processing” (a response) with a middleware See https://book.cakephp.org/4/en/intro.html#cakephp-request-cycle |
# |
Jul 20th 2021, 19:28 |
slackebot2 |
custom fields in the api. I am still getting familiar with the cake event system and middleware. would pre-processing a request body be something I use middleware for? A before render event on the output side? |
# |
Jul 20th 2021, 19:28 |
jadelbe418 |
I am working on a custom fields integration for a CakePHP Rest/ Crud based API. It has a slightly sophisticated MySQL schema architecture to allow users to create their own fields on certain tables in the system. I need to be able to filter posted json data and reformat it for the cake orm on a request so it properly fits into the cake schema and reformat it on the way out so the custom fields display consistently with non |
# |
Jul 20th 2021, 15:53 |
kevin.pfeifer |
so you don't change your datasoure in your tests via the $connection variable? https://book.cakephp.org/3/en/development/testing.html#creating-fixtures |
# |
Jul 20th 2021, 15:30 |
martin |
when I add `test_pipedrive` to the WebServices array and set Classname and Service it works fine. but I have multiple webservices. No problems with them, only with the newest one |
# |
Jul 20th 2021, 15:29 |
kevin.pfeifer |
well to answer your question |
# |
Jul 20th 2021, 15:29 |
kevin.pfeifer |
you are right :thinking_face: |
# |
Jul 20th 2021, 15:28 |
martin |
not sure, default version by cakephp 3.9 I think? |
# |
Jul 20th 2021, 15:27 |
kevin.pfeifer |
is it just me or is phpunit 6.5 pretty old? ,:) |
# |
Jul 20th 2021, 15:24 |
martin |
would be nice if --debug did give me some debug information |
# |
Jul 20th 2021, 15:17 |
martin |
```vendor/bin/phpunit --debug PHPUnit 6.5.14 by Sebastian Bergmann and contributors. Exception: The datasource configuration "test_pipedrive" was not found. in [/var/www/vendor/cakephp/cakephp/src/Datasource/ConnectionManager.php, line 195]``` How can I fix this issue? pipedrive is a webservice not a database. so can’t really add a test_pipedrive resource? Also have no tests that require that |
# |
Jul 20th 2021, 13:05 |
sebastiansperandio093 |
thanks kevin! |
# |
Jul 20th 2021, 12:22 |
paolo.bragagni |
yes thank you!! |
# |
Jul 20th 2021, 12:14 |
ndm |
Good... for reference, here's an overview of the field formats for the different association types: https://book.cakephp.org/4/en/views/helpers/form.html#associated-form-inputs |
# |
Jul 20th 2021, 12:11 |
paolo.bragagni |
:) |
# |
Jul 20th 2021, 12:11 |
paolo.bragagni |
it works |
# |
Jul 20th 2021, 12:11 |
ndm |
You just need to change the field name. |
# |
Jul 20th 2021, 12:10 |
paolo.bragagni |
hum |
# |
Jul 20th 2021, 12:10 |
ndm |
what... no! That array format was just to illustrate what the data will look like in the request. |
# |
Jul 20th 2021, 12:08 |
paolo.bragagni |
so in this way? $this->Form->hidden('books',['value' => ['categories' => [['id' => 'value']]]]) |
# |
Jul 20th 2021, 12:05 |
paolo.bragagni |
I check it all |
# |
Jul 20th 2021, 12:04 |
paolo.bragagni |
yes |