Cakephp Multiple Checkboxes in a row not showing values - cakephp

$this->Form->checkbox('username', array('value' => 'basssr', 'style' => 'float: left; display: inline'));
this code only show check box not values

Try this:
<div style="float:left;">
<?php
echo $this->Form->input('username', array('type' => 'checkbox','value' => 'basssr', 'style' => 'float: left; display: inline'));
?>
</div>
this code put it 2 times This will shows checkboxes in horizontal.

Related

Cakephp 3. Image Radio Buttons

Regarding to Cakephp 3 Form Helper, for Radio Buttons with Images, i got a question need to ask for help.
From the forumn there's a question, but it was 10 years version earlier, which is not suitable for my codes.
originally the Add.ctp for this item is meant for Type=>Select
<?php echo $this->Form->control('product_image_id', array('label'
=> false, 'div' => false,
'class' => 'form-control', 'type' => 'select', 'empty' =>
'Choose Image')); ?>
in the Type select, the name of the images only shows out. not the images.
When i want to put the Form Control into the code for the add.ctp
<?php foreach ($product['product_images'] as $productImg) : ?>
<div class="container parent">
<div class="row">
<div class='col text-center'>
<?php echo $this->Form->control('product_image_id', ['type' =>
'radio', 'escape' =>
false, 'class' => 'form-control', 'id' =>$productImg->id,
'name'=>'imgbackground' ]); ?
>
<label for="<?= $productImg->id ?>">
<?php
echo $this->Html->image($imgPath, ['width' => '100']);
?>
<div class="tick_container">
<div class="tick"><i class="fa fa-check"></i></div>
</div>
</label>
</div>
</div>
</div>
<?php endforeach; ?>
Information regarding settings for Form Control for radio buttons is limited....
can anyone help to advise where i went disaligned?
thanks
You basically have two options, that is either manipulate the radio options for FormHelper::control() to include your custom label contents, or to manually create each label and radio button.
For the former you build an options array that holds nested arrays with text and value keys, where text is the label contents, and value the radio button value, eg
[
['text' => '<img src="..."> ...', 'value' => '1'],
['text' => '<img src="..."> ...', 'value' => '2'],
// etc ...
]
A quick and dirty example could look like this (I'm just guessing here that there's something like a path property on your product images, you'll most likely have to adjust this a bit according to your needs to build the proper web path to the image):
echo $this->Form->control('product_image_id', [
'type' => 'radio',
'templates' => [
'radioWrapper' => '{{input}}{{label}}',
'nestingLabel' => '{{hidden}}<label{{attrs}}>{{text}}</label>',
],
'labelOptions' => [
'escape' => false,
],
'options' => collection($product['product_images'])
->map(function ($productImage) {
return [
'text' =>
$this->Html->image($productImage->path, ['width' => '100']) .
'<div class="tick_container">
<div class="tick"><i class="fa fa-check"></i></div>
</div>',
'value' => $productImage->id,
];
}),
]);
Note that you need to define custom/modified templates for the label and the wrapper if you actually need the input to be rendered outside of the label. If you don't actually need it to be rendered that way, then you can drop this example's templates option, by default the form helper would render the input inside of the label, eg:
<label><input/>text</label>
See also
Cookbook > Views > Helper > Form > Creating Radio Buttons
Cookbook > Views > Helper > Form > Using Collections to build options

Cakephp Pagination without number

I'm trying to find out how to display pagination buttons withou displaying numbers over the buttons. In documentation there is no word about this, but i assume that it's possible to manage this thing.
You can do this with Javascript or simply CSS by hide the text content.
For example if you paginated your results in like this means
<div id="paginator">
<?php echo $this->Paginator->prev('Previous'); ?>
<?php echo $this->Paginator->first('First'); ?>
<?php echo $this->Paginator->numbers(array('class' => 'number', 'first' => false, 'last' => false, 'separator' => '-')); ?>
<?php echo $this->Paginator->last('Last'); ?>
<?php echo $this->Paginator->next('Next'); ?>
</div>
Using CSS you can hide as follow
<style>
#paginator span
{
border:1px saddlebrown solid;
padding:3px;
margin: 2px;
background: #1e7ec8;
color: brown;
}
#paginator span a
{
text-decoration: none;
color: white;
}
#paginator .number a
{
color:transparent;
}
</style>
Also using Javascript or Jquery you can set text of numbers class empty by following
$(document).ready(function() {
$('.number').text('');
});

How to hide css border-right using loop for even number count in cakephp

I am using cakephp and here is my sample code below along with the css i am doing
<div class="thumbs">
<?php if(!empty($auction['Product']['Image']) && count($auction['Product']['Image']) > 0):?>
<?php foreach($auction['Product']['Image'] as $image):?>
<?php if(!empty($image['ImageDefault'])) : ?>
<span><?php
echo $html->link(
$html->image('default_images/'.$appConfigurations['serverName'].'/thumbs/'.$image['ImageDefault']['image']),
'/img/'.$appConfigurations['currency'].'/default_images/max/'.$image['ImageDefault']['image'],
array('class' => 'productImageThumb'),
null,
false);?>
</span>
<?php endif; ?>
<?php endforeach;?>
<?php endif;?>
</div>
.thumbs span //css for how to display the images
{
float:left;
width:75px; //this displays two images as a thumbnail in a single row
margin:12px;
border-right:1px solid #d5d5d5;
padding:3px;
}
My problem is i want to do css border-right:none for all the images having count as even numbers. I tried using for loop in the span of my code but not getting the result. Please suggest me how to dynamically do css border-right for only thumb images of odd number count and not for even numbers.
Add the key to the foreach loop and add a new class to odd images using the key (assuming this is a standard Cake query result where the key reliably increments by one):
foreach( $auction['Product']['Image'] as $key => $image ):
$odd = ( $key % 2 ) ? ' oddImage' : '';
....
array( 'class' => 'productImageThumb'.$odd ),
....
.oddImage {
border-right:1px solid #d5d5d5;
}
(Protip: You don't have to wrap every line of PHP into <?php ... ?> tags. The code will be much more readable if you close the PHP tags only when you need to output pure HTML.)

Custom Submit button

How can I create submit button, and define custom title on it, together with custom class style?
You could use either submit() or button() methods of the Form helper instead of the end() method. For example:
echo $this->Form->submit(
'Send',
array('class' => 'custom-class', 'title' => 'Custom Title')
);
Don't forget to close the form. You can do it by calling the end() method without any arguments.
echo $this->Form->end();
Also remember, you can always do it old school
I prefer to use $this->Form->end( ); without arguments and build my own submit buttons and markup. It's easy
<div class="buttons clearfix">
<button type="submit" class="positive">
<span class="icon-wrapper"><img src="path/to/tickmark.png" alt="" title="" /></span>
Save Item
</button>
</div>
I would also tell you to experiment with the $this->Form->input('Model.field', 'options' => array( array('type' => 'button'))); - particularly the before, between, after, and class options. You can use the helper to create <input type="button" /> elements with a good amount of flexibility.
you can create costum submit by this code
echo $this->Form->submit(
'Submit',
array('div' => false,'class' => 'urclass', 'title' => 'Title')
);
This is enough:
echo $this->Form->submit("Custom message");
Also as #Mike suggest close the form with
echo $this->Form->end();
Or you can combine both with:
echo $this->Form->end("Custom Message");
I created a custom button using an image in my under app/webroot/img that uses inline style for specifying size and changing the position to center
$options=array('type'=>'Make secure payment', 'type'=>'image', 'style'=>'width:200px; height:80px; display:block; margin-left:auto; margin-right:auto;');
echo $this->Form->submit('/img/axiaepaysecurebuttongray_med.png', $options);
echo $this->Form->end();
For CakePHP 2.x, you can use
$options = array(
'label' => 'Update',
'div' => array(
'class' => 'glass-pill',
)
);
echo $this->Form->end($options);

How can I line up radio buttons horizontally rather than vertically?

I have been looking at the Cookbook - 7.3.3 Automagic Form Elements trying to find a way for radio buttons to line up horizontally rather than vertically. I have been looking at the 'div' => 'class_name' $options also the $options[‘between’], $options[‘separator’] and $options[‘after’] but have been unsuccessful. Is there a "cake" way of doing this?
<?=$form->input('Product Type', array(
'type' => 'radio',
'id' => $tire['ProductType']['id'],
'name' => $tire['ProductType']['id'],
'options' => array(2=>'Tire Manufacturer', 7=>'Rim Manufacturer '),
));?>
The of equivalent this
<label>Product Type</label>
<div style="padding-top:5px;">
<input type="radio" name="data[Manufacturer][product_type_id]" value="<?=$tire['ProductType']['id']?>"> Tire Manufacturer
<input type="radio" name="data[Manufacturer][product_type_id]" value="<?=$wheel['ProductType']['id']?>"> Rim Manufacturer
</div>
This works for me:
Inside your view file (viewfile.ctp):
<div>
<?php
echo $this->Form->create('changeRegion');
$options=array('US'=>'U.S.','CA'=>'Canada', 'FN'=>'International');
$attributes=array('legend'=>false, 'label'=>false, 'value'=>'US', 'class'=>'locRad');
echo $form->radio('subLocation',$options,$attributes);
echo $this->Form->end();
?>
<div class="clear"></div>
</div>
Make sure 'label'=>false and 'legend'=>false are set in your attributes.
In your stylesheet:
input[type=radio] {
float:left;
margin:0px;
width:20px;
}
form#changeRegionStdForm input[type=radio].locRad {
margin:3px 0px 0px 3px;
float:none;
}
I fought this forever because of the default CakePHP style rule for input[type=radio] (inside the app/webroot/css/cake.generic.css file) was always taking precedence. I generated another rule to specifically pick out the radio group in question by referencing the form along with the radio input rule appended with the class name (form#changeRegionStdForm input[type=radio].locRad). I initially did this with the form# rule listed before the input[type=. Only when I moved it after the input[type= did the radio buttons line up horizontally.
I hope this makes sense and actually helps someone else.
The easiest way to do this is to put each radio button inside an 'LI' tag, and then apply CSS styles to the 'UL' that tells it to show 'LI' tags horizontally instead of vertically. You can find a lot of horizontal list designs here.
I found this post very late. But i thought others might stumble upon this like i did now.
Try something like this:
<ul id="hMenu"><li>
<?php
$attributes=array('legend'=>false, 'separator'=>'</li><li>', 'label'=>false);
$form->input('Product Type',$options, $attributes);
?>
</li></ul>
Now style the id hMenu. That should solve this problem.
This without any styling gives verical radio buttons. But if you use css styling on ul and li you could literally make it stand on its head! :)
use this:
$form->input('Product Type', array(
'type' => 'radio',
'id' => $tire['ProductType']['id'],
'name' => $tire['ProductType']['id'],
'options' => array(2=>'Tire Manufacturer', 7=>'Rim Manufacturer '),
***********************
'seperator' => '<br />'
***********************
));
which result look like this :
<label>Product Type</label>
<div style="padding-top:5px;">
<input type="radio" name="data[Manufacturer][product_type_id]" value="<?=$tire['ProductType']['id']?>"> Tire Manufacturer
<br />
<input type="radio" name="data[Manufacturer][product_type_id]" value="<?=$wheel['ProductType']['id']?>"> Rim Manufacturer
</div>
Try this, I got my code working through this..
<ul id = "navlist">
<fieldset>
<legend><?php echo __('Insert User'); ?></legend>
<li><?php //echo $this->Form->input('Site', array('options' => $arraycharges));?></li>
<li><?php echo $this->Form->input('MobileApp', array('options' => array('admin' => 'Admin', 'user' => 'User')));?></li>
<li><?php echo $this->Form->input('Location', array('options' => array('admin' => 'Admin', 'user' => 'User')));?></li>
<li><?php echo $this->Form->end(__('GO')); ?></li>
</fieldset>
</ul>
in the style sheet add the following..
#navlist li {
display: inline-block;
list-style-type: none;
padding-right: 20px;
}
You an follow like this :
<ul>
<li style="width: 200px;float: left;list-style: none">
<?php
$attributes=array(
'legend'=>false,
'after'=>'</li>',
'separator'=>'</li><li style="width: 200px;float: left;list-style: none">',
);
echo $this->Form->radio('xyz_name',$myOptions,$attributes);
?>
</li>
</ul>

Resources