Log message #4223365

# At Username Text
# Jan 22nd 2020, 16:20 ndm @matt There's the `changePrimaryKey()` method: https://book.cakephp.org/phinx/0/en/migrations.html#changing-the-primary-key
# Jan 22nd 2020, 16:15 matt ```attendees(id,member_id,occ_id) - new table```
# Jan 22nd 2020, 16:15 em That could clarify this situation a little bit i think
# Jan 22nd 2020, 16:15 matt ```attendees(member_id,occ_id) - old table```
# Jan 22nd 2020, 16:14 matt i need the new primary key to be a 'id' column
# Jan 22nd 2020, 16:14 matt How do i change the primary key of table that was earlier using a composite key from a migration?
# Jan 22nd 2020, 16:13 ndm I wonder if the validator should maybe pass a custom flag into the context argument, so that one could properly determine how the method is invoked
# Jan 22nd 2020, 16:12 ndm You're welcome
# Jan 22nd 2020, 16:10 em @ndm now i see that isEmptyAllowed() has no data parameter at all :) And i got about custom validation, Thank you :)
# Jan 22nd 2020, 16:09 ndm You need to understand that these rules are invoked in different scenarios, and account for no data being present accordingly. In forms, the rule will be invoked to determine whether to set the `required` attribute on the HTML element. If you can't work out something that works in both form context and actual data validation context, then you'll probably need a custom validation rule instead.
# Jan 22nd 2020, 16:06 em @ndm Okay, so i should not use $validator->notEmptyString() for that purpose, right ?
# Jan 22nd 2020, 16:04 ndm The form context couldn't pass any data even if it wanted to, as the validator API (`\Cake\Validation\Validator::isEmptyAllowed()`) doesn't support that
# Jan 22nd 2020, 16:02 ndm If you are referring to it being invoked when you create form controls (as opposed to validation being executed when you patch/create your entity with the submitted form data), then yes, that is expected.
# Jan 22nd 2020, 16:00 slackebot passed to validator, but it does not. Is it expected like this ?
# Jan 22nd 2020, 16:00 em @ndm In controller i get my user entity with $this->Users->get($id); Then i pass this user entity into the view. There i create form like this: ```<?php echo $this->Form->create($user); ?> <?php echo $this->Form->control('firstname') ?> <?php echo $this->Form->control('lastname', ) ?> <?php echo $this->Form->submit(__('Save')); ?> <?php echo $this->Form->end(); ?>``` So, i do not specify any context for this form. I expected that data will be
# Jan 22nd 2020, 15:58 ndm you're welcome
# Jan 22nd 2020, 15:57 ndm @em In which context (application wise) is the data empty? Are you specifically refering to when its invoked as a part of creating form controls? In that case it's expected to be empty, as the form context doesn't try to pass in any data
# Jan 22nd 2020, 15:56 crayfishuk @ndm thanks :)
# Jan 22nd 2020, 15:50 crayfishuk Good advice re being familiar with the destination - obvious when you say it out loud :grinning:
# Jan 22nd 2020, 15:50 crayfishuk Good point. We've been in v2 for years. Only recently getting our heads round v3!
# Jan 22nd 2020, 15:49 em ```$validator->notEmptyString('name', __('Specify your name'), function($context) { if (isset($context['data']['role'])) { return $context['data']['role'] === 'partner'; } return false; });``` I have trouble with $context[‘data’]. Somehow it is always empty even if i add entity to $this->Form->create($user); Does anyone have any ideas ? I use cake 4 version
# Jan 22nd 2020, 15:49 slackebot the point that you'd be able to create a robust application with it, that will answer lots of upgrading questions, and make it easier in general.
# Jan 22nd 2020, 15:49 ndm @crayfishuk That really depends on the complexity of the application. You most likely won't get it into a working state just by using the upgrade tool, I've yet to see even one application for which that worked, but if it's not to complex, and largely follows the conventions, then an upgrade could be the way to go to avoid all the repetitive tasks. I'd always recommend to first make yourself familiar with the version that you're upgrading too, to
# Jan 22nd 2020, 15:48 crayfishuk Aha - found it :) https://github.com/rectorphp/rector
# Jan 22nd 2020, 15:45 crayfishuk Rector?
# Jan 22nd 2020, 15:44 ricksaccous so you have a series of upgrade scripts that an help
# Jan 22nd 2020, 15:44 ricksaccous there's also an upgrade script though that dereuromark created
# Jan 22nd 2020, 15:44 ricksaccous not sure if rector handles that
# Jan 22nd 2020, 15:44 ricksaccous that might be easier since you have rector
# Jan 22nd 2020, 15:43 crayfishuk @ndm Does that go for a 2.10 to 3.x migration too?
# Jan 22nd 2020, 15:10 kiwi_92 Indeed. That's what our plan is for this year. We were considering Laravel, but I have always liked Cake and hoped upgrading might be faster.
# Jan 22nd 2020, 15:08 spriz Rather migrate it while it works and no huge security holes has been found ;P
# Jan 22nd 2020, 15:08 kiwi_92 Thank you
# Jan 22nd 2020, 15:08 kiwi_92 It still works well but obviously very outdated.
# Jan 22nd 2020, 15:07 kiwi_92 Haha, that's what I feared. The app has several years of development in it. Not a small job. :D
# Jan 22nd 2020, 15:07 spriz @ndm Ideally I think a method where with the signature of `($field, $maxDigits, $maxDecimals)` would make sense :D
# Jan 22nd 2020, 15:06 ndm @kiwi_92 Rewrite the application from scratch
# Jan 22nd 2020, 15:06 ndm @spriz There's the `decimal` rule... and `lessThanOrEqual` seems fine, doesn't it?
# Jan 22nd 2020, 15:03 kiwi_92 I have a Cake 1.3 application. If I want to upgrade it to Cake 4.0, what's the recommended route? Upgrade to 2.x, then 3.x, then 4.x?
# Jan 22nd 2020, 14:52 spriz Also any more sneaky way to ensure it stays witin range than `->lessThanOrEqual('price', 999999999.999)` ?
# Jan 22nd 2020, 14:52 spriz Any sneaky way to make sure only values with 3 decimals are put into an entity? (eg. DECIMAL(12,3) )