Creating a custom field for creating coordinates via google maps
I know how to use google maps and bind the 'dragend' event to populate fields with the coordinates.
However I am having difficulty using the Base_module_model to store and retrieve the values I wish to. I was not able to work out the "Custom Fields Objects" as the guide on that part is quite sparse.
First I used the "point" type of mysql to store the coordinates. I could select the value as `concat(x(coordinates),y(coordinates)) AS coordinates`. However the "point" type doesn't seem to be in the base_models, how could I extend this?
Further, how would I load custom JS to load on the display of the module form?
Right now I resolved to using 2 separate decimal fields to store the coordinates and enter them manual. Not very elegant
Really appreciate any help
Comments
If you are using the 1.0 beta, you can create a custom field type that gets attached to Form_builder which allows you to associate js and css to a particular field type. There is a "forms" section in the 1.0 User Guide that talks a bit more about custom field types:
https://github.com/daylightstudio/FUEL-CMS-User-Guide-Module
After that is working a possible parameter would be to enable Google maps, and in that case the field becomes hidden and coordinates get loaded to a dragable pinpoint which updates the hidden field on dragend.
Thanks for pointing me to the new guide, but like my question about no wysiwyg I am unable to successfully use a custom field in context of my module models. The guide only seems to cover how to set up a form for the frontend, rather than the CMS and the magic modules.
Also while using the guide and trying to access /fuel/tools/user_guide/libraries/form_builder throws this error:
Fatal error: Cannot redeclare class Form_builder in modules\fuel\libraries\Form_builder.php on line 43
1. Create a class or function that contains the logic for creating the field. The fuel/modules/fuel/libraries/Fuel_custom_fields.php is a good place to look as an example. A $param of options will get passed to your method or function which will include an 'instance' parameter that represents the Form_builder class instance that's generating the form.
2. Map that class/function using the fuel/application/config/custom_fields.php config file. There is more information that can be found here in your user guide installation:
fuel/tools/user_guide/general/forms#association_parameters
// multi field $fields['multi'] = array( 'class' => 'My_class', 'function' => 'point', 'js' => array('my_js'), 'js_function' => 'my_js_function', 'css' => array('my_css'), 'represents' => 'point', );
3. Now use your new field in your model's form_field method:
... $fields['my_point'] = array('type' => 'point');
With regards to the Form_builder error, I'm not able to replicate that at the moment. What is your setup? Do you get that error on any of the FUEL Specific Classes?
I was able to set everything up for my requirements, however not able to use MySQL point value I went back to using two decimal fields.