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 > <javascript:>> 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/BootstrapFo >>>>>>>>> rmHelper.php >>>>>>>>> > • CakePHP 3 - https://github.com/Holt59/cake >>>>>>>>> php3-bootstrap3-helpers/blob/master/View/Helper/BootstrapFo >>>>>>>>> rmHelper.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 <javascript:>. >> To post to this group, send email to cake...@googlegroups.com >> <javascript:>. >> 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.