Skip to content

Option encode_options: "..." is ignored #179

@u07

Description

@u07

Hi!

When saving flex-objects data with JSON formatter we are allowed to set some options like file_extension, encode_options, decode_assoc, etc. The thing is, encode_options param is not handled. Example:

storage:
            class: 'Grav\Framework\Flex\Storage\FolderStorage'
            options:
                formatter:
                    class: 'Grav\Framework\File\Formatter\JsonFormatter'
                    options:
                        encode_options: 'JSON_UNESCAPED_UNICODE'  # See https://www.php.net/manual/en/function.json-encode.php
                folder: user-data://contacts

Encode options are useful when dealing with non-latin symbols, like Cyrillic. By default Cyrillic is escaped to \u123456. So the JSON looks completely gibberish:

image

Setting encode_options: 'JSON_UNESCAPED_UNICODE' (int 256) should help with that, unless it won't.

All the constants like 'JSON_UNESCAPED_UNICODE' => JSON_UNESCAPED_UNICODE are defined in 'Grav\Framework\File\Formatter\JsonFormatter', but it is never called. Instead grav\vendor\rockettheme\toolbox\File\src\JsonFile.php is used. And the encoding options are never passed to it:

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions