Log message #4264451

# At Username Text
# May 30th 2021, 14:34 etibor its just dont allow when the selected item is null i tried to add that exception: if($frat->_joinData->score > $frat->maximal || $frat->_joinData->score<1 || !is_null($frat->_joinData->result)){
# May 30th 2021, 14:33 etibor yes i did it, i added to the DocumentsTable
# May 30th 2021, 14:12 kevin.pfeifer so you can sort of create custom flash messages in your model even though you don’t have access to the flash component inside your model
# May 30th 2021, 14:12 kevin.pfeifer which can be extended in the model and later accessed in the controller
# May 30th 2021, 14:11 kevin.pfeifer basically I added a property to that class
# May 30th 2021, 14:04 kevin.pfeifer you added ```class ProjectsTable extends Table { public array $flash_errors = [];``` to your DocumentsTable?
# May 30th 2021, 14:03 etibor thank you Kevin its almost good: Undefined property `flash_errors`. You have not defined the `flash_errors` association on `App\Model\Table\DocumentsTable`.
# May 30th 2021, 13:59 kevin.pfeifer Projects is your Table of course
# May 30th 2021, 13:59 slackebot $this->Flash->error( __d('alfred_projects', 'The project could not be saved. Please, try again.' ) ); } }```
# May 30th 2021, 13:59 kevin.pfeifer ```if( $this->Projects->save( $project ) ) { $this->Flash->success( __d('alfred_projects', 'The project has been saved.' ) ); return $this->redirect( [ 'action' => 'edit', $project->id ] ); } else { if( sizeof( $this->Projects->flash_errors ) > 0 ) { foreach( $this->Projects->flash_errors as $error ) { $this->Flash->error( $error ); } } else {
# May 30th 2021, 13:58 kevin.pfeifer and access these messages in your controller
# May 30th 2021, 13:58 kevin.pfeifer ``` $rules->add(function ($entity, $options) { array_push( $this->flash_errors, "my error message" ); return false; }, 'ruleName', [ 'errorField' => 'is_done', 'message' => 'My custom message' ]);```
# May 30th 2021, 13:57 kevin.pfeifer ```class ProjectsTable extends Table { public array $flash_errors = [];```
# May 30th 2021, 13:57 kevin.pfeifer i guess it would be easier for you to set “custom error messages” like so
# May 30th 2021, 13:56 etibor $this->Form->control('storage.'.$i.'._joinData.score',['label'=>(false),    'type'=>'select','options'=>$options,'empty'=>__('choose') ]); // i have actually 4 fields like this
# May 30th 2021, 13:55 etibor if the error message is displayed on the top of the page it would be also good
# May 30th 2021, 13:55 etibor actually i have a field for total score, echo $this->Form->control( 'score' ); and if there is the custom error, the message is displayed there
# May 30th 2021, 13:51 slackebot <kevin.pfeifer>
# May 30th 2021, 13:51 kevin.pfeifer which results in
# May 30th 2021, 13:51 kevin.pfeifer ``` echo $this->Form->control( 'is_done' );```
# May 30th 2021, 13:50 kevin.pfeifer and my form outputs
# May 30th 2021, 13:50 kevin.pfeifer in my Table
# May 30th 2021, 13:50 kevin.pfeifer ``` public function buildRules( RulesChecker $rules ): RulesChecker { $rules->add(function ($entity, $options) { return false; }, 'ruleName', [ 'errorField' => 'is_done', 'message' => 'My custom message' ]); return $rules; }```
# May 30th 2021, 13:50 kevin.pfeifer let me explain how I got it working
# May 30th 2021, 13:47 etibor and the form is $this->Form->create($document)
# May 30th 2021, 13:47 etibor $this->Form->control('storage.'.$i.'._joinData.score',['label'=>(false), 'type'=>'select','options'=>$options,'empty'=>__('choose') ]);
# May 30th 2021, 13:45 kevin.pfeifer let me check that
# May 30th 2021, 13:45 etibor but that does not show the erro by that field
# May 30th 2021, 13:44 etibor i tried like this(just for give a try): ['errorField'=>'storage.0._joinData.score','message'=>'Do not change Form field values!']
# May 30th 2021, 13:43 etibor the fields look like this storage.$i._joinData.score
# May 30th 2021, 13:42 kevin.pfeifer ha ok
# May 30th 2021, 13:41 etibor the last thing would be to show the error message by the properly form field
# May 30th 2021, 13:41 kevin.pfeifer hello :)
# May 30th 2021, 13:41 etibor the solution almost work perfectly
# May 30th 2021, 13:40 etibor hello Kevin
# May 30th 2021, 08:26 kevin.pfeifer :clap: ndm
# May 30th 2021, 04:17 admad @ndm You are already the north star of this channel for quite a while, guiding the lost souls.
# May 30th 2021, 01:59 davinci nice!!! thanks!
# May 30th 2021, 01:47 ndm Other than custom associations like those, the pretty much only other option would be to manually load the associated results in a result formatter, where you have access to the binding key values. You'd have to use something similar with row numbering window functions, or you'd have to run one additional query per parent, which kinda sucks @davinci
# May 30th 2021, 01:39 ndm Now it's my time to shine :) https://github.com/icings/partitionable
# May 30th 2021, 01:23 davinci I'm sure I'm missing something obvious, but can't think of it