Log message #4266372

# At Username Text
# Jun 24th 2021, 22:51 ricmelero As far as I can see, here is the issue src/Routing/Route/Route.php:366 ```// Remove defaults that are also keys. They can cause match failures foreach ($this->keys as $key) { unset($this->defaults[$key]); }```
# Jun 24th 2021, 22:50 ricmelero what I was trying to do is to setup a default lang... but it seems that Route::match() is mutating internals of the route, so after first match, the defaults changes, making next match call fails
# Jun 24th 2021, 22:48 ricmelero this is the route definition, I'm using the AdMad/I18n Routing plugin
# Jun 24th 2021, 22:48 ricmelero ```$builder->connect('/', ['controller' => 'Authentication', 'action' => 'login', 'lang' => 'es'], RouteNames::login);```
# Jun 24th 2021, 22:47 ricmelero I use a class with const for named routes
# Jun 24th 2021, 22:47 ricmelero Sorry, RouteName::login is ['_name' => 'login']
# Jun 24th 2021, 22:47 ricmelero I'm having a weird issue with routes, that fails the second time I build the same url, in this case a named route: ```$loginUrl = Router::url(RouteNames::login); $loginUrl = Router::url(RouteNames::login);``` The first call works ok, building login url, but second fails
# Jun 24th 2021, 21:10 marius.treu my current approach is with amphp executing the resulting SQL genereated by an cakephp query
# Jun 24th 2021, 21:10 marius.treu hi all, is there a way to create async queries with the cakephp ORM?
# Jun 24th 2021, 20:12 rightscoreanalysis my bad, I frogot to prefix themodel with the plugin name
# Jun 24th 2021, 20:02 rightscoreanalysis anyone able to help with a cake2 question, in my Api model: public $useTable = false; in another model I have: ClassRegistry::init('Api'); but I get: *Error:* Table _apis_ for model _Api_ was not found in datasource _default_.
# Jun 24th 2021, 16:37 richard no worries, i always thought it was weird too ;)
# Jun 24th 2021, 16:36 kaliel thank you <3
# Jun 24th 2021, 16:36 kaliel @richard oh my god it works, kind of weird
# Jun 24th 2021, 16:35 richard @kaliel yes
# Jun 24th 2021, 16:35 richard think it’s ‘_method’
# Jun 24th 2021, 16:35 kaliel you mean in Router::url ?
# Jun 24th 2021, 16:35 richard and you have to if you limit it like that i believe
# Jun 24th 2021, 16:35 richard @kaliel you can specify the method in the route
# Jun 24th 2021, 16:32 kaliel ```$url = Router::url(['prefix' => 'Api', 'controller' => 'Payment', 'action' => 'notify'], true); // gives a MissingRouteException```
# Jun 24th 2021, 16:31 kaliel Hi everyone, any clue on why a route which only accept POST method, is not found by Router;;url() ? ``` $builder->connect('/payment/notify', ['controller' => 'Payment', 'action' => 'notify']) ->setMethods(['POST']);```
# Jun 24th 2021, 15:11 admad `contain('Related' => function ($q) { //modify query })`
# Jun 24th 2021, 09:06 conehead @val I added a Rule "IsNullOrUnique" for that
# Jun 24th 2021, 09:03 val Hi, is there a way to use `$rules->isUnique()` in 3.x but to ignore this rule if the field value that should be validated is null?
# Jun 24th 2021, 08:47 conehead Yes, that does work. But I think it would be not so good to catch the event every time something is saved and then 99.9% of the time just do nothing :P I guess I will just go with it by triggering my own event
# Jun 24th 2021, 08:45 kevin.pfeifer Model.beforeSave here: https://github.com/cakephp/cakephp/blob/master/src/ORM/Table.php#L1936
# Jun 24th 2021, 08:44 kevin.pfeifer e.g. the global Model.afterSave event is being triggered here https://github.com/cakephp/cakephp/blob/master/src/ORM/Table.php#L2009
# Jun 24th 2021, 08:43 slackebot coupling is the measure of how little a class is “wired” to external objects, and how much that class is depending on them."
# Jun 24th 2021, 08:43 conehead Like the first sentence of the Event System says: "Creating maintainable applications is both a science and an art. It is well-known that a key for having good quality code is making your objects loosely coupled and strongly cohesive at the same time. Cohesion means that all methods and properties for a class are strongly related to the class itself and it is not trying to do the job other objects should be doing, while loosely
# Jun 24th 2021, 08:38 slackebot test it
# Jun 24th 2021, 08:38 conehead @erwane What is weird about it? I think it is even cleaner to seperate code like this. Especially if multiple models are involved @kevin.pfeifer Yes thanks, that is what I think I will do (or what I am already doing). Was just wondering if these events were triggered automatically. I just don't see code of updating other data or sending mails in my table. Especially by putting it in an EventListener it makes it way easier to
# Jun 24th 2021, 08:36 kevin.pfeifer but I can't tell you the performance impact of one over the other
# Jun 24th 2021, 08:35 kevin.pfeifer but sure, you could dispatch an event in the afterSave function of your UsersTable and then put your logic in the listener for `Model.Users.afterSave`
# Jun 24th 2021, 08:30 kevin.pfeifer look at the last code example in this section https://book.cakephp.org/4/en/core-libraries/events.html#registering-anonymous-listeners
# Jun 24th 2021, 08:30 erwane But it's ... weird ...
# Jun 24th 2021, 08:29 erwane If you want events in another file, you have to trigger you own events name. You have to do ```public function afterSave($event) { $this->dispatchEvent('Model.Users.afterSave', ...) } ```
# Jun 24th 2021, 08:29 conehead Or I would catch 'Model.afterSave' and then check if its the correct Table...but probably that would slow things down a lot if I check it after every save
# Jun 24th 2021, 08:27 conehead Yes, but in that case I would have to dispatch a new event in the afterSave method, correct?
# Jun 24th 2021, 08:26 kevin.pfeifer usually you are fine adding these events to your config/bootstrap.php (or require a events.php in the config/bootstrap.php which adds those listeners)
# Jun 24th 2021, 08:25 kevin.pfeifer well ok, the afterSave() function in the UsersTable is just a preconfigured function called on that event you want. But if you want that to be present elsewhere you just need to be sure, that your listener is set before the actuall event is being triggered
# Jun 24th 2021, 08:23 conehead @kevin.pfeifer not sure...should it? In my opinion it is cleaner to seperate it. I do not want to blow up the UsersTable