Log message #4265408

# At Username Text
# Jun 14th 2021, 19:09 tomrwaller In my case, I'm not actually using customers, that was an example. With this, when I save an assessment, an answer gets created for each recommendation in the selected baselines. When I change the form control back to baselines._ids which is what it was when baked, and update the beforeMarshal to match, the if always fails because the data is empty.
# Jun 14th 2021, 19:07 slackebot ($query as $count => $recommendation) {`                 `$data['answers'][$count]['applicable'] = 1;`
# Jun 14th 2021, 19:07 slackebot `$recommendations = TableRegistry::getTableLocator()->get('Admin.Recommendations');`             `$query = $recommendations->find('all');`             `$query->matching('Baselines', function ($q) use ($data){`                 `return $q->where(['Baselines.id IN' => $data['baselines_ids']]);`             `});` `            `             `foreach
# Jun 14th 2021, 19:07 tomrwaller Possibly an issue in my beforeMarshal, but it seems to work. This is what I have that works: `echo $this->Form->control('baselines_ids', ['multiple' => 'checkbox', 'disabled' => false, 'options' => $baselines]` `public function beforeMarshal(\Cake\Event\Event $event, \ArrayObject $data, \ArrayObject $options)`     `{`         `if (!empty($data['baselines_ids'])) {`            
# Jun 14th 2021, 19:04 kevin.pfeifer there is some logic present int https://github.com/cakephp/cakephp/blob/76babd83538e3e247d1189c2289b2f7b31c2bc9a/src/View/Form/EntityContext.php#L260 and https://github.com/cakephp/cakephp/blob/fe6fd198e33f69c1d36d5df4ac2c92d26ffa4807/src/View/Helper/FormHelper.php which checks if the fieldname ends with `._ids` (one time actually checking for the ._ids and the other exploding the field by .)
# Jun 14th 2021, 19:03 greg138 Sounds like your beforeMarshal function has an issue.
# Jun 14th 2021, 19:03 greg138 Then the difference is that Cake has logic to handle a `_ids` as a special case, but nothing for `customers_ids`.
# Jun 14th 2021, 19:02 tomrwaller No. No field matching that.
# Jun 14th 2021, 19:02 greg138 Do you actually have a field in your database somewhere called `customers_ids`?
# Jun 14th 2021, 19:01 tomrwaller Yes - I'm just trying to understand what the difference is and why one works and one doesn't.
# Jun 14th 2021, 19:00 kevin.pfeifer you mean `customers._ids` right?
# Jun 14th 2021, 18:57 tomrwaller I also notice that if I change the control to control('customers_ids') I have to add a label manually, it doesn't automatically use the label as it does when using ._ids.
# Jun 14th 2021, 18:56 tomrwaller Guys - silly question - but what's the difference between customers_ids and customers_.ids? I'm calling a control in a form by control('customers._ids') and that works just fine. However, I'm using beforeMarshal to create some additional entities and I have a query there that looks for $data['customers_ids'). That works if I change the control to control('customers_ids') but it doesn't work if I leave the control as is.
# Jun 14th 2021, 17:37 kevin.pfeifer have you tried that? https://stackoverflow.com/questions/40609304/cakephp-3-x-optional-language-routing
# Jun 14th 2021, 17:33 alamnaryab `debug($this->request);` at localhost/project/en
# Jun 14th 2021, 17:32 alamnaryab I also debugged `$this->request` it is not showing language parameter while I have written code to get language parameter from `request->params` and switch accordingly
# Jun 14th 2021, 17:28 alamnaryab as now `language` is no more any parameter
# Jun 14th 2021, 17:27 alamnaryab @admad I added separate route scopes for both languages but before when I was switching language I used below line but now it is not working asdsa
# Jun 14th 2021, 17:03 alamnaryab better if it can force default language = ar if no lange parameter forun in url
# Jun 14th 2021, 17:02 slackebot $builder->fallbacks(); }); $routes->prefix('Admin', function (RouteBuilder $routes) { $routes->connect('/', ['controller' => 'Users', 'action' => 'login']); $routes->fallbacks(DashedRoute::class); });```
# Jun 14th 2021, 17:02 alamnaryab @admad below is my routes file before Multilanguage, now I have 2 languages , can you plz convert this to for languages (en,ar) ```use Cake\Routing\Route\DashedRoute; use Cake\Routing\RouteBuilder; use Cake\Routing\RouterBuilder; $routes->setRouteClass(DashedRoute::class); $routes->scope('/', function (RouteBuilder $builder) { $builder->connect('/', ['controller' => 'cv', 'action' => 'index']);
# Jun 14th 2021, 16:58 alamnaryab I am attaching routes output from debugger and also cmd
# Jun 14th 2021, 16:52 kevin.pfeifer can/should we add a warning to the scope function if such a "placeholder" can be detected? :thinking_face:
# Jun 14th 2021, 16:48 admad @alamnaryab `scope(':/language')` that's your problem. Scopes can't be place holders/route elements, they need to be static strings.
# Jun 14th 2021, 16:19 slackebot that Controller/Action/Whatever So it could be that the routes are just being set differently than you expect. Unfortunately I can't tell you how to set your routes so you have a language prefix/scope for your controllers.
# Jun 14th 2021, 16:19 kevin.pfeifer @alamnaryab I would try to check the "Routes" tab in the DebugKit to see if the routes are actually generated the way you intend them to. Otherwise you could also run `bin/cake routes` in the terminal if you don't have access to the DebugKit to see the same table of active routes. Basically (as far as I know) the route system works like • go through all the available routes • after the first match is present go to
# Jun 14th 2021, 15:25 martin ok fixed it by setting it to _orginal in entity when I update 1 of the 2 fields :)
# Jun 14th 2021, 15:07 martin https://github.com/cakephp/cakephp/blob/master/src/Datasource/EntityTrait.php#L304 hmm it just reads out the array from orignal, so does not work with custom made fields :(
# Jun 14th 2021, 15:03 martin Hmm when you create a virtual field inside a entity. it does not work with getOriginal(‘virtualfieldname’) ? because that already returns the new name (virtuel field just combines 2 fields)
# Jun 14th 2021, 13:55 a.vanniel I just don't know enough about routing to be able to help you here.. maybe someone else has an idea?
# Jun 14th 2021, 13:55 a.vanniel is placing the language as the first parameter actually possible with Cake? I am not entirely sure, it does feel like it get's a bit complicated because of this and I am not sure if Cake actually enjoys this way of routing/handling urls... whenever I needed to switch from locale I would add a request variable named lang= of language= but that might not be suitable for you... it might also not be very elegant.
# Jun 14th 2021, 12:12 slackebot way to debug, currently just hit and try. please help me out in this issue I will also be able to give anydesk access to quickly debug and trace the issue.
# Jun 14th 2021, 12:12 slackebot $routes ->connect('/', ['controller' => 'Users', 'action' => 'login']) ->setPatterns($patterns); $routes->fallbacks(DashedRoute::class); }); }); $routes->scope('/', function (RouteBuilder $builder) { $builder->connect('/*', ['controller' => 'cv', 'action' => 'index','language'=>'ar'], array('language' => 'en|ar')); $builder->fallbacks(); }); ``` I have no idea what is right
# Jun 14th 2021, 12:12 slackebot $builder->fallbacks(); }); $routes->scope('/:language', function (RouteBuilder $routes) { $routes->prefix('Admin', function (RouteBuilder $routes) { $patterns = ['language' => 'en|ar']; $routes ->connect('/:controller/:action/*', []) ->setPatterns($patterns); $routes ->connect('/:controller', ['action' => 'index']) ->setPatterns($patterns);
# Jun 14th 2021, 12:12 slackebot $builder) { $builder->connect('/', ['controller' => 'cv', 'action' => 'index']); $builder->connect('/:language/:controller/:action/*', array(), array('language' => 'en|ar')); $builder->connect('/:language/:controller', array('action' => 'index'), array('language' => 'en|ar')); $builder->connect('/:language', array('controller' => 'cv', 'action' => 'index'), array('language' => 'en|ar')) ;
# Jun 14th 2021, 12:12 slackebot time getting error saying missing route, while sometime ```Warning (2): preg_match(): Compilation failed: two named subpatterns have the same name (PCRE2_DUPNAMES not set) at offset 42 [CORE\src\Routing\Route\Route.php, line 454]``` my routes are as below ```<?php use Cake\Routing\Route\DashedRoute; use Cake\Routing\RouteBuilder; $routes->setRouteClass(DashedRoute::class); $routes->scope('/:language', function (RouteBuilder
# Jun 14th 2021, 12:12 alamnaryab I have cakephp4.2 project I have admin prefix I am using Authentication Plugin for admin I also have Localization that is English and Arabic Languages, it worked until the language parameter is saved in session (followed official documentation) but when I needed to show language parameters in URLs and also `$this->Html->link()` automatically add current language parameters to links I tried many things with routing, some
# Jun 14th 2021, 12:02 alamnaryab ok let me write again with more description
# Jun 14th 2021, 11:56 a.vanniel I fear that is because it is not clear what your question is... or at least I did not even see anything remotely like a question until i clicked on the reply of your own message.
# Jun 14th 2021, 11:45 alamnaryab :white_frowning_face: no one is helping me
# Jun 14th 2021, 11:43 alamnaryab tried many things some time getting missing route some time some other error