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.mikael@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 cyclesTOn 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...TOn 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/src/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/cakephp-bootstrap3-helpers/blob/master/View/Helper/BootstrapFormHelper.php
> • CakePHP 3 - https://github.com/Holt59/cakephp3-bootstrap3-helpers/blob/master/View/Helper/BootstrapFormHelper.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+unsubscribe@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+unsubscribe@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.
No comments:
Post a Comment