label not working with date select in cakephp 3 - cakephp

I'm using form helper to input date select as follows
echo $this->Form->date('date_from', [
'empty' => [
'year' => 'Choose Year',
'month' => 'Choose Month',
'day' => 'Choose Date'
],
'label' => 'Date From'
]);
But this is only showing select field and not the label Date From

It looks like CakePHP3 form helper with date doesn't support label as parameter.
But this will generate exactly the same label as you want:
<?php
echo $this->Form->label('Date From');
echo $this->Form->date('date_from', [
'empty' => [
'year' => 'Choose Year',
'month' => 'Choose Month',
'day' => 'Choose Date'
],
]);
?>
See here: Creating label in CakePHP3 form helper.

You can add the label in your HTML code:
<div class="input date">
<label>My label</label>
<?php echo $this->Form->date('from_date'); ?>
</div>
The difference between the Date Form Control and Form Control is that the last one outputs the div wrapper and the label (among others).

Related

How do I add a custom field input file to add a picture of product in Woocommerce?

I need to add some custom field input type="file" to add a picture of product in Woocommerce?
You need the added picture to be displayed when viewing the product as the main photo.
This is the code I'm trying to make. But not enough knowledge.
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_field2s' );
function woo_add_custom_general_field2s() {
echo '<div class="options_group">';
woocommerce_wp_text_input( array( // Custom field
'id' => '_Button',
'label' => __( 'Choose file-code', 'woocommerce' ),
'placeholder' => '',
'type' => 'file',
'desc_tip' => 'true',
'custom_attributes' => array(),
'description' => __( 'Choose your pic of product', 'woocommerce' ),
) );
echo '</div>';
}

Cakephp not saving the selected value of date field

I have this problem, I am using cake 2.8.x, my cakephp application is not saving the selected value of the date field. It kept saving "1970-01-01" even if you selected "2016-02-02" . What could be wrong?
This is my code in the controller
$this->request->data['Jobapp']['dayofbirth']= date('Y-m-d H:i:s', strtotime($this->request->data['Jobapp']['dayofbirth']));
$this->request->data['Jobapp']['dateofissue']= date('Y-m-d H:i:s', strtotime($this->request->data['Jobapp']['dateofissue']));
$this->request->data['Jobapp']['expirydate']= date('Y-m-d H:i:s', strtotime($this->request->data['Jobapp']['expirydate']));
and this is one of the field in the view file
<td><?php echo $this->Form->input('dayofbirth',array('label'=>'Date of Birth','type'=>'date','minYear'=>date('Y') - 90))?>
What could be the issue?
'dayofbirth' => array(
'day' => '12',
'month' => '08',
'year' => '1993'
),
'maritalstatus' => 'emtpy',
'nationality' => 'empty',
'complexion' => '',
'passportnumber' => '',
'dateofissue' => array(
'month' => '05',
'day' => '25',
'year' => '2016'
),
'placeofissue' => '',
'expirydate' => array(
'month' => '05',
'day' => '25',
'year' => '2016'
),
Your date fields are arrays. Try:
$this->request->data['Jobapp']['dayofbirth']= date('Y-m-d H:i:s', strtotime(implode('-',$this->request->data['Jobapp']['dayofbirth'])));
the same with other fields
You don't need to modify date field, CakePHP takes care of it. So You can get rid of these lines:
$this->request->data['Jobapp']['dayofbirth']= date('Y-m-d H:i:s', strtotime($this->request->data['Jobapp']['dayofbirth']));
$this->request->data['Jobapp']['dateofissue']= date('Y-m-d H:i:s', strtotime($this->request->data['Jobapp']['dateofissue']));
$this->request->data['Jobapp']['expirydate']= date('Y-m-d H:i:s', strtotime($this->request->data['Jobapp']['expirydate']));
You can take help of jquery ui, with which you can avoid date field modification withing controller.
In your view do the following changes,
<!-- Load the jquery & jquery ui library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
<script>
$(function(){
$(".datepicker").datepicker({dateFormat:"yyyy-mm-dd"});
});
</script>
<?php echo $this->Form->input('dayofbirth',['class'=>'datepicker']); ?>
<?php echo $this->Form->input('dateofissue',['class'=>'datepicker']); ?>
<?php echo $this->Form->input('expirydate',['class'=>'datepicker']); ?>
Please remove your controller code that processes input data. You should be then able to insert date in correct format.

How to populate dropdown in cakephp?

I want top populate dropdown date field in cakephp 2.x.
my date format is 1987-07-05 but when i using cakephp date.
echo $this->form->input('birthday', array(
'type' => 'date',
'id' => 'birthday',
'required' => false,
'empty' => array(
'month' => 'Month', 'day' => 'Day', 'year' => 'Year'
),
'id' => 'birthday',
'minYear' => date('Y') - 16,
'maxYear' => date('Y') - 60,
'label' => FALSE,
'style'=>'width:100px',
'value'=>$getProfile['Performer_detail']['birthday']
));
With the code above, I am getting 3 dropdown fields: Month, Day, and Year: I am also getting 1987-07-05 in $getProfile['Performer_detail']['birthday'] but these 3 fields are not selected.
Please help me.
Use this code -
<?php echo $this->form->dateTime(
'birthday', 'MDY','', array(
'id'=>'birthday','value'=>$getProfile['Performer_detail']['birthday'], 'empty' => array('month' => 'Month', 'day' => 'Day', 'year' => 'Year'),'label'=>'','minYear'=>date('Y')-16,'maxYear'=>date('Y')-60
)
);?>
I am pasting the demo to understand the Date input field in cakephp.
table: users
id int
name varchar
birthday date
add.ctp
<?php
echo $this->Form->create();
echo $this->Form->input('name');
echo $this->Form->input('birthday',array('dateFormat' => 'YDM'));
echo $this->Form->end();
?>
Form will look like this,Notice the values.It will display the current date by default.
I have added one record with name Kevin and Date 2019-5-September.Now this is when i edit the same record
edit.ctp
<?php
echo $this->Form->create();
echo $this->Form->input('name');
echo $this->Form->input('birthday',array('dateFormat' => 'YDM'));
echo $this->Form->input('id', array('type' => 'hidden'));
echo $this->Form->end('submit');
?>
As you can see that in both file add.ctp and edit.ctp file i haven't included extra value for the birthday.Cakephp will autofill the field data in edit form if you have correctly followed the cakephp conventions.So here no need to add the $getProfile['Performer_detail']['birthday']

how to add id and class to select box in Cakephp

i am new to cakephp so i dont know how to i do this ... i have a view page in which there is a select box in which time zone is displaying
<?php
echo $this->Timezone->select('timezone');
?>
i want to add the 'id' , 'class' and label to it .. and if label isnt possible then its okk ..but the id and class is very important
what i want actually my select box is this
<label for="validation-select" class="label">Select</label>
<select id="validation-select" name="validation-select" class="select validate[required]">
or if i want to add the timezone in this i dont know how can i do this
helper class
http://bakery.cakephp.org/articles/MarkAlanEvans/2009/12/17/updated-timezone-helper
$month = array('1' => 'January', '2' => 'February', '3' => 'March', '4' => 'April', '5' => 'May', '6' => 'June', '7' => 'July', '8' => 'August', '9' => 'September', '10' => 'October', '11' => 'November', '12' => 'December');
echo $this->Form->select('month', $month, array('class' => 'form-control month', 'placeholder' => 'Month', 'id' => 'month', 'empty' => 'Select Month'));
Use the options array
A select generated by the form helper will already have an id of the format "ModelField" - if you want to override it just specify it in the options array (the second argument):
echo $this->Form->input('timezone', array(
'options' => $options
'id' => 'foo',
'class' => 'bar'
));
In the same way you can modify/add all tag attributes.
Since you're not directly using the form helper - simply modify the Timezone helper to permit passing another argument, and add pass through to the call to Form->input.

CakePHP trouble using FormHelper for a year menu

Cake 2.2.4
I have a database sport_year field set to the YEAR data type.
I've tried two approaches to creating a year menu for my add/edit views, but both have their own problems.
Using $this->Form->input:
echo $this->Form->input('sport_year', array(
'type' => 'date',
'dateFormat' => 'Y',
'name' => 'data[Sport][sport_year]',
'minYear' => date('Y') - 2,
'maxYear' => date('Y') + 1,
'label' => 'Year',
'empty' => '- select -'
));
The code works fine to add or edit data (as does the validation), but when arriving at the edit page existing year data is not properly selected in the form. The data array does show [sport_year] => 2012, but 2012 is not selected in the menu.
echo $this->Form->year(
'sport_year',
date('Y') - 2,
date('Y') + 1,
array(
'name' => 'data[Sport][sport_year]',
'label' => 'Year',
'empty' => '- select -'
)
);
The year helper seems to correctly retrieve and select the existing data, but the label does not work, and it doesn't correctly render the field as required even though my Model has validation set. It does still require the data, but it ignores my Model custom message and is falling back to a save error message in my controller.
$this->Form->year() will never show a label. Only $this->Form->input() adds labels as it is a wrapper method and year() is for creating a year field.
The code in cake is something like:
public function input() {
echo '<div>';
echo $this->label(...);
echo $this->year(...);
echo '</div>';
}
Taking this code, you do not need name as cake will be generating that already. If you are not in the Sport model you can use input('Sport.sport_year', ...)
If you read the docs you should see there is a default option for inputs. you can use that or make sure that $this->request->data['Sport']['sport_year'] is set to the year you want.
You could also set the value option.
echo $this->Form->input('sport_year', array(
'type' => 'date',
'dateFormat' => 'Y',
'minYear' => date('Y') - 2,
'maxYear' => date('Y') + 1,
'label' => 'Year',
'empty' => '- select -',
'default' => date('Y')
));
or
echo $this->Form->input('sport_year', array(
'type' => 'date',
'dateFormat' => 'Y',
'minYear' => date('Y') - 2,
'maxYear' => date('Y') + 1,
'label' => 'Year',
'empty' => '- select -',
'value' => date('Y')
));
For option 1 do this:
echo $this->Form->input('sport_year', array(
...
'selected' => 'data[Sport][sport_year]'
));

Resources