I understand your point of view as well and I know what the default helper does. It is a pain but you are writing a custom helper - you can freely do what you want :)
Why not override the templates in the config of your helper as Jose suggested and have additional methods in your helper which create input-groups? You may need to implement a widget for it... T On Mon, Aug 4, 2014 at 4:54 PM, Mikaël Capelle <capelle.mik...@gmail.com> wrote: > Thanks for you answer, I understand your point of view. > > Unfortunately the 'input' method does not generate only the HTML input tag > (even when not using a custom helper): > > $this->Form->input('mail') ; > > <div class="form-group"> > <label class="control-label">Mail</label> > <input /* etc. */ /> > </div> > > It is almost like the default CakePHP helper, I just changed the div class > from 'input' to 'form-group'. So, now the problem with 'prepend' is that I > need to insert HTML inside the HTML generated by the 'input' method: > > <div class="form-group"> > <label class="control-label">Mail</label> > <!-- Here. --> > <input /* etc. */ /> > <!-- And here. --> > </div> > > On Monday, August 4, 2014 1:07:16 PM UTC+2, Dr. Tarique Sani wrote: > >> <div class="input-group"> >> <span class="input-group-addon">@</span>^^^^ This part of the input group >> is NOT a part of the form element thus as a best compromise I would put it >> in a separate helper method with options - so something like >> >> >> $this->Form->inputGroup([class=>'input-group-addon', 'text'=>'@']); >> >> $this->Form->input('field',[moreoptions]); >> >> >> but then IMHO it is plain abuse of CPU cycles >> >> >> T >> >> >> >> >> On Mon, Aug 4, 2014 at 3:06 PM, Mikaël Capelle <capelle...@gmail.com> >> wrote: >> >>> How would you do that? >>> >>> I can't do this: >>> >>> echo $htmlBefore.$this->Form->input().$htmlAfter ; >>> >>> because I need to include it inside the generated HTML. Of course, I >>> could create the whole HTML outside the helper and use the "direct" method >>> ('text' for example) to get only the input tag, but it would be more >>> complicated and I would lose every advantage of using a custom helper. >>> >>> Actually, this is a plugin, so I just want it to be easy to use, even if >>> it's not easy to write (well, my code is currently working so it is not >>> that hard). I think it's easier to write: >>> >>> echo $this->Form->input('field', ['prepend' => '@']) ; >>> >>> than to write the whole bootstrap HTML. >>> >>> >>> On Monday, August 4, 2014 8:57:54 AM UTC+2, Dr. Tarique Sani wrote: >>> >>>> If I were to do it I would leave the HTML which is before and after the >>>> input tag out of the FormHelper - Keep it simple... >>>> >>>> T >>>> >>>> >>>> >>>> >>>> On Fri, Aug 1, 2014 at 8:25 PM, Mikaël Capelle <capelle...@gmail.com> >>>> wrote: >>>> >>>>> Thanks for the link! Unfortunately it doesn't help since it does not >>>>> allow user to create bootstrap 'input-group', it is only template for >>>>> default input, which I've already done even if it's look better written >>>>> this way. >>>>> >>>>> >>>>> On Friday, August 1, 2014 4:49:42 PM UTC+2, José Lorenzo wrote: >>>>>> >>>>>> Look at this project for inspiration: >>>>>> >>>>>> https://github.com/commercial-hippie/chocolate/blob/master/s >>>>>> rc/View/Helper/BootstrapFormHelper.php >>>>>> >>>>>> On Friday, August 1, 2014 2:31:44 PM UTC+2, Mikaël Capelle wrote: >>>>>>> >>>>>>> I think my question was not clear actually... >>>>>>> >>>>>>> What I'm doing is inheriting standard CakePHP FormHelper to generate >>>>>>> HTML form with bootstrap templates. It's currently working well, but in >>>>>>> the >>>>>>> 'input' method overload, I'm doing a temporary change to the 'input' >>>>>>> template as shown in my first post. >>>>>>> >>>>>>> My question is: Is that a 'good' way of doing what I want? I mean, >>>>>>> using temporary template changes. >>>>>>> >>>>>>> I don't want people to have to change the template manually when >>>>>>> calling the 'input' method, it should be transparent for users. >>>>>>> >>>>>>> Thanks for your answer, >>>>>>> >>>>>>> On Friday, August 1, 2014 2:21:34 PM UTC+2, José Lorenzo wrote: >>>>>>>> >>>>>>>> You can make temporary changes to the templates both with >>>>>>>> Form->create() and Form->input() >>>>>>>> >>>>>>>> $this->From-input('foo', ['templates' => ['inputContainer' => >>>>>>>> $template]]); >>>>>>>> >>>>>>>> An alternative is not using input(); but just build the html >>>>>>>> yourself in the template and call $this->Form->text('foo') , for >>>>>>>> example >>>>>>>> >>>>>>>> On Friday, August 1, 2014 1:51:48 PM UTC+2, Mikaël Capelle wrote: >>>>>>>>> >>>>>>>>> Thanks for your answer! >>>>>>>>> >>>>>>>>> The problem is still the same with 'inputContainer', I need to >>>>>>>>> make a temporary update if I want to prepend / append something. >>>>>>>>> >>>>>>>>> I will look at custom widget but I am not sure it's match what I >>>>>>>>> want... The prepend / append options should be available with most >>>>>>>>> type of >>>>>>>>> input, it's not really a widget itself. >>>>>>>>> >>>>>>>>> On Friday, August 1, 2014 1:37:54 PM UTC+2, Thomas von Hassel >>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> use the `inputContainer` template to wrap the content like this: >>>>>>>>>> >>>>>>>>>> 'inputContainer' => '<div class="form-group input >>>>>>>>>> {{type}}{{required}}">{{content}}</div>’, >>>>>>>>>> >>>>>>>>>> or create a custom widget, depending on how much customisation >>>>>>>>>> you want >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 01 Aug 2014, at 12:24, Mikaël Capelle <capelle...@gmail.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> > Hi everyone, >>>>>>>>>> > >>>>>>>>>> > I am porting my CakePHP 2.0 helpers to CakePHP 3.0 and I am >>>>>>>>>> facing some troubles with my custom FormHelper. The helpers are made >>>>>>>>>> to be >>>>>>>>>> used with bootstrap, the two form helpers can be found here: >>>>>>>>>> > • CakePHP 2 - https://github.com/Holt59/cake >>>>>>>>>> php-bootstrap3-helpers/blob/master/View/Helper/BootstrapForm >>>>>>>>>> Helper.php >>>>>>>>>> > • CakePHP 3 - https://github.com/Holt59/cake >>>>>>>>>> php3-bootstrap3-helpers/blob/master/View/Helper/BootstrapFor >>>>>>>>>> mHelper.php >>>>>>>>>> > In the BootstrapFormHelper::input method, I have a 'prepend' >>>>>>>>>> and 'append' options which are used to create bootstrap input >>>>>>>>>> groups. With >>>>>>>>>> the 2.0 version, I used the 'before' and 'after' options to create >>>>>>>>>> such >>>>>>>>>> groups but these options are not available anymore with CakePHP 3.0 >>>>>>>>>> so what >>>>>>>>>> I'm doing is a temporary template change: >>>>>>>>>> > >>>>>>>>>> > $oldTemplate = $this->templates('input') ; >>>>>>>>>> > if ($options['prepend']) { >>>>>>>>>> > $this->templates([ >>>>>>>>>> > 'input' => /* ... */ >>>>>>>>>> > ]) ; >>>>>>>>>> > } >>>>>>>>>> > $res = parent::input(/* ... */) ; >>>>>>>>>> > $this->templates([ >>>>>>>>>> > 'input' => $oldTemplate >>>>>>>>>> > ]) ; >>>>>>>>>> > return $res ; >>>>>>>>>> > >>>>>>>>>> > Is there a better way to do such thing with CakePHP 3.0? >>>>>>>>>> > >>>>>>>>>> > Thanks, >>>>>>>>>> > >>>>>>>>>> > -- >>>>>>>>>> > Like Us on FaceBook https://www.facebook.com/CakePHP >>>>>>>>>> > Find us on Twitter http://twitter.com/CakePHP >>>>>>>>>> > >>>>>>>>>> > --- >>>>>>>>>> > You received this message because you are subscribed to the >>>>>>>>>> Google Groups "CakePHP" group. >>>>>>>>>> > To unsubscribe from this group and stop receiving emails from >>>>>>>>>> it, send an email to cake-php+u...@googlegroups.com. >>>>>>>>>> > To post to this group, send email to cake...@googlegroups.com. >>>>>>>>>> > Visit this group at http://groups.google.com/group/cake-php. >>>>>>>>>> > For more options, visit https://groups.google.com/d/optout. >>>>>>>>>> >>>>>>>>>> -- >>>>> Like Us on FaceBook https://www.facebook.com/CakePHP >>>>> Find us on Twitter http://twitter.com/CakePHP >>>>> >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "CakePHP" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to cake-php+u...@googlegroups.com. >>>>> To post to this group, send email to cake...@googlegroups.com. >>>>> Visit this group at http://groups.google.com/group/cake-php. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> >>>> >>>> -- >>>> ============================================================= >>>> The Conference Schedule Creator : http://shdlr.com >>>> >>>> PHP for E-Biz : http://sanisoft.com >>>> ============================================================= >>>> >>> -- >>> Like Us on FaceBook https://www.facebook.com/CakePHP >>> Find us on Twitter http://twitter.com/CakePHP >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "CakePHP" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to cake-php+u...@googlegroups.com. >>> To post to this group, send email to cake...@googlegroups.com. >>> Visit this group at http://groups.google.com/group/cake-php. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> ============================================================= >> The Conference Schedule Creator : http://shdlr.com >> >> PHP for E-Biz : http://sanisoft.com >> ============================================================= >> > -- > Like Us on FaceBook https://www.facebook.com/CakePHP > Find us on Twitter http://twitter.com/CakePHP > > --- > You received this message because you are subscribed to the Google Groups > "CakePHP" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to cake-php+unsubscr...@googlegroups.com. > To post to this group, send email to cake-php@googlegroups.com. > Visit this group at http://groups.google.com/group/cake-php. > For more options, visit https://groups.google.com/d/optout. > -- ============================================================= The Conference Schedule Creator : http://shdlr.com PHP for E-Biz : http://sanisoft.com ============================================================= -- Like Us on FaceBook https://www.facebook.com/CakePHP Find us on Twitter http://twitter.com/CakePHP --- You received this message because you are subscribed to the Google Groups "CakePHP" group. To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscr...@googlegroups.com. To post to this group, send email to cake-php@googlegroups.com. Visit this group at http://groups.google.com/group/cake-php. For more options, visit https://groups.google.com/d/optout.