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.

Reply via email to