Skip to content

Adds the trasform callback that create the option from key and value - #57

Open
fcamp wants to merge 1 commit into
tuupola:2.xfrom
fcamp:2.x
Open

Adds the trasform callback that create the option from key and value#57
fcamp wants to merge 1 commit into
tuupola:2.xfrom
fcamp:2.x

Conversation

@fcamp

@fcamp fcamp commented May 23, 2017

Copy link
Copy Markdown

Can be used to modify the option.
By default, the options can have just a value and a label,
but in this way data properties can be added or we can apply other transformations.

For example when I change an option,
I could load the associated image, or check if that item is a leaf or it has children, without having to launch a request, but using the data from the json response I get on change.

Can be used to modify the option.
By default, the options can have just a value and a label,
but in this way `data` properties can be added or we can apply other transformations.
@tuupola

tuupola commented Jun 2, 2017

Copy link
Copy Markdown
Owner

I kind of like this, but I have hard time figuring out the use case you explained. Do you have an example code snippet how you use it at the moment?

@fcamp

fcamp commented Jun 5, 2017

Copy link
Copy Markdown
Author

I have a category tree which is not uniform.
Sometimes the leaf (a category with 0 children) are at level 0, sometimes they are at level 1 or 2.

Whenever I find a leaf, I set an hidden field (coming from a symfony form), with the category id.

Without the transform callback, I should request the server just to know if that category is a leaf or not.

In this way we can work with a richer json response, not just the {"key":"value"}

This is the callback applied to each item on the server side

<?php
    ...

    /**
     * @param Category $category
     * @return array
     */
    public function transform(Category $category)
    {
        return [
            $category->getId() => [
                'label' => $category->getTitle(),
                'children' => $category->getChildrenCount(),
            ]
        ];
    }

This is part of the js code

$("#js-category-1").remoteChained({
    parents: "#js-category-0",
    url: "/my/url",
    loading: {'label': 'Loading...'},
    transform: function (key, value) {
        return $('<option/>', {
            'data-has-children': value.children,
            'value': key
        }).append(value.label);
    }
});

@fcamp

fcamp commented Feb 13, 2018

Copy link
Copy Markdown
Author

Hi, Is there any chance that this change will be merged?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants