how to set default item in Select2 on Yii2 - yii

how to set default item in Select2 on Yii2
The initSelection method of Select2 3.5.x plugin is obsolete/removed.
New initValueText property is been provided with the Select2 widget to
cater to this (e.g. for ajax based loading).
but initValueText dont work!!!
<div class="col-xs-12">
<?php
$categories = [5 => 'test1', 7=> 'test2', 8=> 'test3'];
echo Select2::widget([
'initValueText' => $categories,
'model' => $modelKani,
'name' => 'Kani',
'id' => 'Kani',
'data' => $data,
'showToggleAll' => false,
'options' => [
'placeholder' => 'Insert Item',
'multiple' => true,
'allowClear' => true,
'minimumInputLength' => 2,
'dir' => 'rtl'
],
]);
?>
</div>
result $data:
Array
(
[5] = test1
[7] = test2
[8] = test3
)

Provide model and attribute OR name and value. You have provided model and name so model is ignored and value is set to null.
As for the initValueText - its description states: "the displayed text in the dropdown for the initial value when you do not set or provide data (e.g. using with ajax)". You have provided data.

work with this:
'value' => [5, 10]
item id 5,10 from $data
Doc:
http://demos.krajee.com/widget-details/select2#usage-tags

Related

Bitrix24: Fill in listvalue via the Api with lists.element.add

I to choose a list-value via the API into Bitrix
CRest::call('lists.element.add',
[ 'IBLOCK_TYPE_ID' => 'lists',
'IBLOCK_ID' => '134',
'ELEMENT_CODE' => 'element'.$entry[134] ,
'FIELDS' => [
'NAME' => 'TEST'.$leadID,
'PROPERTY_1430' => 'YES or NO' ,
]
]
Ho do i set the Value for Protpery_1430? Here "Yes or NO"
There is a screenshot of the values of the Ja (Yes) and (NO):
Some help would be nice :)
Roland
Just pass the list variant identifier; e.g.:
CRest::call('lists.element.add', [
'IBLOCK_TYPE_ID' => 'lists',
'IBLOCK_ID' => '134',
'ELEMENT_CODE' => 'element'.$entry[134] ,
'FIELDS' => [
'NAME' => 'TEST'.$leadID,
'PROPERTY_1430' => 2463, // or 2464
]
];
If you can't use identifiers and need to use values,
use the lists.field.get method and find the identifier by the value from the DISPLAY_VALUES_FORM field.

Prestashop 1.6.1 Helper Form fields undefined index

I'm struggling with this for quite some hours:
I'm trying to add new fields to a form generated with the HelperForm class in Prestashop for a custom module.
I try to do this for the configuration page of the module in the getContent() function
The following field is accepted and it works:
array(
'type' => 'file',
'label' => $this->l('Button image'),
'id' => 'button_image_path',
'name' => 'button_image_path',
'image' => '<img src="'._MODULE_DIR_.$this->name.'\\img\\'.basename($buttonImage["setting_value"]).'" class="button-image-preview" width="30">'
)
However, when i try to add other fields like this:
array(
'type' => 'text',
'label' => $this->l('Number of displayed products'),
'name' => 'CROSSSELLING_NBR',
'desc' => $this->l('Set the number of products displayed in this block.'
)
It gives this error:
Notice on line 387 in file D:\wamp\www\qmart.ro\tools\smarty\sysplugins\smarty_internal_templatebase.php(157) : eval()'d code
[8] Undefined index: CROSSSELLING_NBR
However, the input is still generated, and it looks like this:
<input type="text" name="CROSSSELLING_NBR" id="CROSSSELLING_NBR" value="" class="">
What i tried:
Changing the input type from text to color for example, and it gave the same error
Changing the label content and the name content, and the error still appeared
I did not change anything in the core files.
So, the form is being built for those inputs, but this "undefined index" thing still occurs.
So, apparentply they force you to choose some default value for the inputs.
i simplu solved it by adding this line:
$helper->fields_value['CROSSSELLING_NBR'] = '';
According to your code...
array(
'type' => 'text',
'label' => $this->l('Number of displayed products'),
'name' => 'CROSSSELLING_NBR',
'desc' => $this->l('Set the number of products displayed in this block.'
)
You have an error in 'desc', you need close the final parenthesis, this should works...
array(
'type' => 'text',
'label' => $this->l('Number of displayed products'),
'name' => 'CROSSSELLING_NBR',
'desc' => $this->l('Set the number of products displayed in this block.')
)

Yii 2.0 Select Pre-selected values from Database

I have been trying to fix an issue but to no avail but i am sure i will find a solution here. I am using Kartik 2.0 Select extension to do a multiple select. Fine, all working when inserting into the database but i am unable to retrieve the saved records to be displayed as selected back in the select field.
//I have included the kartik widgets already
use kartik\widgets\Select2;
<label>Desired Specialization(s)</label>
<?= $form->field($spec, 'id')->label(false)->widget(Select2::classname(), [
'data' => $model->getAllSpecializations(),
'options' => ['placeholder' => 'You can choose more than one specialization ...'],
'pluginOptions' => [
'allowClear' => true,
'multiple' => true
],
]);
?>
</div>
Please, your reply will be appreciated. Thanks
I think you need to add the saved values as the initial data? Like so:
'value' => $savedDataArray, // initial value
http://demos.krajee.com/widget-details/select2#usage-tags
After much digging into the code, i found a way on how to display selected database values into a multi-select option using Yii Select2
My Model
public function getCandidateLanguage()
{
$langValues = (new \yii\db\Query())
->select('c.language_id AS id, l.lang_name')
->from('candidate_language c ')
->innerJoin('languages l','c.language_id = l.id')
->where('c.candidate_id='.$this->candidate_id)
->orderBy('c.language_id')
->all();
return \yii\helpers\ArrayHelper::map($langValues,'id','lang_name');
}
My View
use kartik\widgets\Select2;
<?php
//the line below is to fetch the array key of $model->getCandidateLanguage() array
$lang->id = array_keys($model->getCandidateLanguage()); // value to initialize
echo Select2::widget([
'model' => $lang,
'attribute' => 'id',
'data' => $model->getAllLanguages(),
'options' => ['placeholder' => 'Choose multiple languages'],
'pluginOptions' => [
'allowClear' => true,
'multiple' => true,
'tags' => true,
],
]);
?>
Hope it help someone who is facing the same issue.

Get images by custom field

I'm trying to display all images that have a certain custom field from the types plugin set to true. It would also work to filter them by post_content or post_excerpt but none of my attempts have worked so far.
<?
$args = array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'post_content' => 'foo',
'numberposts' => -1
);
?>
<? print_r(get_posts($args)); ?>
This get's all images allthough only one has the post_content foo. My attempt to use WP_Query failed miserably as well.
Any help is appreciated!
WP_Query method :
$args = array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'meta_query' => array(
array(
'key' => 'color',
'value' => 'blue',
'compare' => 'LIKE',
),
),
);
$query = new WP_Query( $args );
I am presuming that the reason why you failed with WP_Query is due to the following condition.
Codex states : The default WP_Query sets 'post_status'=>'publish', but attachments default to 'post_status'=>'inherit' so you'll need to explicitly set post_status to 'inherit' or 'any' as well.
http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
get_posts method :
$args = array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'meta_key' => 'custom-field',
'meta_value' => 'custom value',
'numberposts' => -1
);
print_r(get_posts($args));
The only draw back with this method is that the meta_value needs to exactly match what was entered in the custom field. If you still like to use get_posts then use the meta_query as shown in WP_Query example above.

ZF2 form element description

in ZF1 form and form elements had a setDescription method that was outputted as <p>description here</p> in view ....
ZF2 seems that doesn't have this method
so my question is how can i add description to form elements ?
this is my view :
<div>
<?
$form = $this->form;
$form->prepare();
echo $this->form()->openTag($form);
foreach ($form->getElements() as $el) {
?>
<div class="form_element">
<?=$this->formRow($el);?>
</div>
<?
}
echo $this->partial('system/form/buttons_form_part.phtml', array('form' => $form));
echo $this->form()->closeTag();
?>
</div>
Using ZF 2.1.5, one solution might be setOptions().
In the form definiton:
$file = new Element\File('file');
$file->setLabel('Photo (.jpg, .gif, .png)');
$file->setOptions(array('description' => 'test description'));
…
When rendering the form element:
$element = $form->get(…);
var_dump($element->getOptions());
Will give you access to:
array(1) { ["description"]=> string(16) "test description" }
If you mean a label for an Element you can use the setLabel method when you create the form (in Controller).
$name = new Element('name');
$name->setLabel('Your name');
Or if you use an array to create your form elements use this:
array(
'spec' => array(
'name' => 'name',
'options' => array(
'label' => 'Your name',
),
'attributes' => array(
'type' => 'text'
),
)
),
Here is a link:
enter link description here