Answer the question
In order to leave comments, you need to log in
Dojo 1.2.3 and ZF1 - FilteringSelect does not see (does not use) the created Store?
I want to create a Store (for dojo 1.2.3) to use 3 fields (id, name, search_me) and search by search_me, and display name
Search_me is a string that contains additional text information - by which to search (type ahead) element dropdown -a (select-a)
Standard ReadStore (dojo 1.2.3) uses 2 fields (id, name)
Searches by name and displays name
The problem is that FilteringSelect does not see (does not use) the generated Store
SomeForm.php
$this->createElement(
'SomeElement',
'item_id',
array(
'dojo' => 'searchMeStore',
// 'dojoStore' => 'zlib.data.ReadStoreWithExtendedSearch',
// 'dojoStore' => 'dojo.data.ItemFileReadStore',
'dojoType' => 'zlib.Form.ExtendedFilteringSelect',
'storeUrl' => '/items.json',
'autocomplete' => 'false',
'style' => 'width:33em',
)
);
<script>
dojo.require('zlib.data.ReadStoreWithExtendedSearch');
if (!dojo.getObject('searchMeStore')) {
zlib.data.ReadStoreWithExtendedSearch.prototype._getItemByIdentity = function(/* Object */ identity){
console.log('ReadStoreWithExtendedSearch._getItemByIdentity');
// summary:
// Internal function to look an item up by its identity map.
var item = null;
if(this._itemsByIdentity){
item = this._itemsByIdentity[identity];
}else{
item = this._arrayOfAllItems[identity];
}
if(item === undefined){
item = null;
}
return item; // Object
}
var searchMeStore = new wzib.data.ReadStoreWithExtendedSearch({url: ''});
dojo.setObject('searchMeStore', searchMeStore);
}
</script>
dojo.provide('zlib.data.ReadStoreWithExtendedSearch');
dojo.require('dojo.data.ItemFileReadStore');
dojo.declare(
'zlib.data.ReadStoreWithExtendedSearch',
[dojo.data.ItemFileReadStore],
{
constructor: function(/* Object */ keywordParameters){
console.log('ReadStoreWithExtendedSearch.constructor');
// summary: constructor
// keywordParameters: {url: String}
// keywordParameters: {data: jsonObject}
// keywordParameters: {typeMap: object)
// The structure of the typeMap object is as follows:
// {
// type0: function || object,
// type1: function || object,
// ...
// typeN: function || object
// }
// Where if it is a function, it is assumed to be an object constructor that takes the
// value of _value as the initialization parameters. If it is an object, then it is assumed
// to be an object of general form:
// {
// type: function, //constructor.
// deserialize: function(value) //The function that parses the value and constructs the object defined by type appropriately.
// }
this._arrayOfAllItems = [];
this._arrayOfTopLevelItems = [];
this._loadFinished = false;
this._jsonFileUrl = keywordParameters.url;
this._jsonData = keywordParameters.data;
this._datatypeMap = keywordParameters.typeMap || {};
if(!this._datatypeMap['Date']){
//If no default mapping for dates, then set this as default.
//We use the dojo.date.stamp here because the ISO format is the 'dojo way'
//of generically representing dates.
this._datatypeMap['Date'] = {
type: Date,
deserialize: function(value){
return dojo.date.stamp.fromISOString(value);
}
};
}
this._features = {'dojo.data.api.Read':true, 'dojo.data.api.Identity':true};
this._itemsByIdentity = null;
this._storeRefPropName = "_S"; // Default name for the store reference to attach to every item.
this._itemNumPropName = "_0"; // Default Item Id for isItem to attach to every item.
this._rootItemPropName = "_RI"; // Default Item Id for isItem to attach to every item.
this._reverseRefMap = "_RRM"; // Default attribute for constructing a reverse reference map for use with reference integrity
this._loadInProgress = false; //Got to track the initial load to prevent duelling loads of the dataset.
this._queuedFetches = [];
if(keywordParameters.urlPreventCache !== undefined){
this.urlPreventCache = keywordParameters.urlPreventCache?true:false;
}
if(keywordParameters.clearOnClose){
this.clearOnClose = true;
}
},
_getItemByIdentity: function(/* Object */ identity){
console.log('ReadStoreWithExtendedSearch._getItemByIdentity');
// summary:
// Internal function to look an item up by its identity map.
var item = null;
if(this._itemsByIdentity){
item = this._itemsByIdentity[identity];
}else{
item = this._arrayOfAllItems[identity];
}
if(item === undefined){
item = null;
}
return item; // Object
},
}
);
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question