# |
Jun 11th 2021, 12:12 |
kevin.pfeifer |
if you dont use FormHelper as a class you will need to specify that in your `src/View/AppView.php` initialize function via ``` $this->loadHelper( 'Form', [ 'templates' => 'app_form', // will load templates from config/app_form.php 'className' => 'MyForm' ] );``` |
# |
Jun 11th 2021, 12:11 |
kevin.pfeifer |
its the same for cakephp 4 |
# |
Jun 11th 2021, 12:11 |
kevin.pfeifer |
basically that https://stackoverflow.com/questions/57730430/cakephp-3-how-to-extend-an-helper |
# |
Jun 11th 2021, 12:10 |
tomrwaller |
I didn't! Although I suspected there is a whole bunch you can do that I have no clue about! Do you have a link or search term I can look for in the book maybe? |
# |
Jun 11th 2021, 12:08 |
kevin.pfeifer |
sure :) Do you know that you can extend basically any class and use that instead of the “core” one to have some custom logic in there? |
# |
Jun 11th 2021, 12:07 |
tomrwaller |
Sorry! I think this is my lack of knowledge shining through :) I have a Form Template not Helper. |
# |
Jun 11th 2021, 12:06 |
kevin.pfeifer |
or am I not aware of some feature that the Helpers can do with these form templates :thinking_face: |
# |
Jun 11th 2021, 12:00 |
kevin.pfeifer |
no i mean do you have `src/View/Helper/MyFormHelper.php` which extends the base FormHelper |
# |
Jun 11th 2021, 12:00 |
slackebot |
{{attrs}} type="submit">{{text}}</button></div></div>',` `'inputContainerError' => '<div class="form-group has-error" {{required}}>{{content}}</div>{{error}}',` `]` `?>` |
# |
Jun 11th 2021, 12:00 |
slackebot |
name={{name}}[]>{{content}}</select>',` `'error' => '<p class="text-danger">{{content}}</p>',` `'textarea' => '<div class="form-group"><textarea class="form-control" name="{{name}}" {{attrs}}>{{value}}</textarea></div>',` `'button' => '<div class="form-group"><div><button class="btn btn-primary" |
# |
Jun 11th 2021, 12:00 |
slackebot |
/>',` `'label' => '<label {{attrs}} class="form-label text-primary" style="text-transform: uppercase">{{text}}</label>',` `'select' => '<select class="form-control" {{attrs}} name={{name}}>{{content}}</select>',` `'selectMultiple' => '<select class="form-select" multiple {{attrs}} |
# |
Jun 11th 2021, 12:00 |
slackebot |
{{attrs}} />',` `'checkboxWrapper' => '<div class="form-check">{{label}}</div>',` `'inputContainer' => '<div class="form-group mb-3">{{content}}<span class="help form-text text-muted small"><i class="fas fa-fw fa-question-circle"></i>andnbsp{{help}}</span></div>',` `'input' => '<input type="{{type}}" name="{{name}}" {{attrs}} |
# |
Jun 11th 2021, 12:00 |
tomrwaller |
Yes I guess I could pass the class through the control - thanks for the tip! I do have a custom FormHelper already, albeit very basic! `<?php` `return [` `'checkboxFormGroup' => '<div class="form-check"><div class="checkbox">{{label}}</div></div>',` `'checkbox' => '<input type="checkbox" class="form-check-input" name="{{name}}" value="{{value}}" |
# |
Jun 11th 2021, 11:59 |
kevin.pfeifer |
I am not aware that you ccan do conditional logic purely in form templates |
# |
Jun 11th 2021, 11:58 |
kevin.pfeifer |
i would guess you would have to add that logic to the `control()` (or whatever function you are using in your template) So do you have a custom FormHelper already? |
# |
Jun 11th 2021, 11:52 |
tomrwaller |
So I have one for input: 'input' => '<input type="{{type}}" name="{{name}}" {{attrs}} />', This applies to both text input and range input though. I want text input to have a class of form-control in order for it to be Bootstrap 5 formatted. If I add form-control here, it borks my range inputs. |
# |
Jun 11th 2021, 11:51 |
kevin.pfeifer |
so you just need a class with the type of the input? |
# |
Jun 11th 2021, 11:47 |
tomrwaller |
Quick follow up question on Form Helpers if I may - is there anyway in the template to differentiate between a text input and say a range input? If I add form-control class to the input template, it messes up the range, and if I remove it, range works but text box doesn't. |
# |
Jun 11th 2021, 10:50 |
paolo.bragagni |
I pointed my debug breackpoint in the fetch action and I didnt notice the error |
# |
Jun 11th 2021, 10:50 |
paolo.bragagni |
but (I dont know why) if I access via ajax it goes to beforefind |
# |
Jun 11th 2021, 10:49 |
paolo.bragagni |
if I browse directly it doesnt went to beforefind and I got debugging |
# |
Jun 11th 2021, 10:48 |
paolo.bragagni |
there was an erro in my controller beforefind |
# |
Jun 11th 2021, 10:48 |
kevin.pfeifer |
ok, then I ran into another problem with my app where i had to manually add that token :shrug: |
# |
Jun 11th 2021, 10:48 |
paolo.bragagni |
yes it works |
# |
Jun 11th 2021, 10:47 |
slackebot |
<paolo.bragagni> |
# |
Jun 11th 2021, 10:46 |
kevin.pfeifer |
the CsrfMiddleware is a security feature which is enabled by default so it would be pretty bad if you disable it just for that ^^ |
# |
Jun 11th 2021, 10:46 |
kevin.pfeifer |
does it still work? |
# |
Jun 11th 2021, 10:46 |
kevin.pfeifer |
well if you enable it now |
# |
Jun 11th 2021, 10:46 |
paolo.bragagni |
trying to enable? |
# |
Jun 11th 2021, 10:46 |
paolo.bragagni |
yes |
# |
Jun 11th 2021, 10:45 |
kevin.pfeifer |
do you still have the CsrfMiddleware disabled? |
# |
Jun 11th 2021, 10:45 |
kevin.pfeifer |
but! |
# |
Jun 11th 2021, 10:45 |
kevin.pfeifer |
nice |
# |
Jun 11th 2021, 10:45 |
slackebot |
<paolo.bragagni> |
# |
Jun 11th 2021, 10:45 |
paolo.bragagni |
thenks kevin |
# |
Jun 11th 2021, 10:27 |
wizardfix |
Many thanks @kevin.pfeifer I'll try that. :) |
# |
Jun 11th 2021, 10:26 |
kevin.pfeifer |
so if you need to stay on 3.5.17 you can add that try-catch block in your `/app/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php` |
# |
Jun 11th 2021, 10:23 |
kevin.pfeifer |
well according to https://stackoverflow.com/questions/32239205/php-pdo-hide-error-message-when-failed-connecting-to-mysql-server Its basically an exception from the PDO Class which needs to be catched via a try-catch block. |
# |
Jun 11th 2021, 10:20 |
wizardfix |
Haha yes I know @kevin.pfeifer the powers that be are nervous of upgrading... |
# |
Jun 11th 2021, 10:18 |
kevin.pfeifer |
@wizardfix thats quite the old cakephp version ,:) |
# |
Jun 11th 2021, 10:17 |
kevin.pfeifer |
@paolo.bragagni json should be returned like so ```$response = $this->getResponse(); $this->autoRender = false; return $response->withType( 'application/json' ) ->withStringBody( json_encode( $results ) );``` |