Symfony YAML: форматирование вывода - PullRequest
0 голосов
/ 24 октября 2019

Я использую Symfony YAML Component для моделирования и вывода файла yml.

Я хочу добиться следующего:

id: my-page
name: My Page
fields:
  pageTitle: My Page Title
placeholders:
  project-main:
    - component: MyComponent
      fields:
        imageSmall:
          src: /path/to/image.jpg
        imageMed:
          src: /path/to/image.jpg

Я почти справляюсь с этим, просто нужнопомогите понять, как мне нужно сформировать строку от componentName и далее. В настоящий момент я получаю следующий результат:

id: my-page
name: My Page
fields:
    pageTitle: 'My Page Title'
placeholders:
    project-main: { component: MyComponent, 0: { fields: { imageSmall: 'src: /path/to/image.jpg', imageMed: 'src: /path/to/image.jpg' } } }

Хотя это PHP-код, который я использую для его получения, следующий:

use Symfony\Component\Yaml\Yaml;
use Symfony\Component\Yaml\Exception\ParseException;

$array = array(
    "id" => "my-page",
    "name" => "My Page",
    "fields" => ["pageTitle" => "My Page Title"],
    "placeholders" => ["project-main" => array("component" => "MyComponent", array("fields"=>array("imageSmall" => "src: /path/to/image.jpg","imageMed" => "src: /path/to/image.jpg")))]);

$yaml = Yaml::dump($array);

file_put_contents('file.yaml', $yaml);

Любойможет помочь поставить меня на правильный путь :)?

**

  • ОБНОВЛЕНИЕ

**

Я следовал заПодсказка в комментариях и обновление PHP следующим образом:

$array = array(
    "id" => "my-page",
    "name" => "My Page",
    "fields" => ["pageTitle" => "My Page Title"],
    "placeholders" => ["project-main" => ["component" => "MyComponent", "fields"=>array("imageSmall" => "src: /path/to/image.jpg","imageMed" => "src: /path/to/image.jpg")]]);

$yaml = Yaml::dump($array,4);

file_put_contents('file.yaml', $yaml);

После этого мой вывод выглядит следующим образом:

id: my-page
name: My Page
fields:
  pageTitle: My Page Title
placeholders:
  project-main:
    component: MyComponent
    fields:
      imageSmall:
        src: /path/to/image.jpg
      imageMed:
        src: /path/to/image.jpg

Так что я немного переместился, но все еще получаю "компонент: MyComponent "вместо" - компонент: Мой компонент ". Любые советы по решению этой последней проблемы :)?

1 Ответ

0 голосов
/ 25 октября 2019

Чтобы контролировать уровень, на котором самосвал переключается на использование встроенной нотации, вы должны передать желаемый уровень в качестве второго аргумента методу dump() (значение по умолчанию 2).

Чтобы получить ожидаемую структуру при дампе, вам нужно настроить входной массив, который в настоящее время не соответствует ожидаемому:

use Symfony\Component\Yaml\Yaml;

$array = [
    'id' => 'my-page',
    'name' => 'My Page',
    'fields' => ['pageTitle' => 'My Page Title'],
    'placeholders' => [
        'project-main' => [
            [
                'component' => 'MyComponent',
                'fields' => [
                    'imageSmall' => [
                        'src' => '/path/to/image.jpg',
                    ],
                    'imageMed' => [
                        'src' => '/path/to/image.jpg',
                    ],
                ],
            ],
        ],
    ],
];

$yaml = Yaml::dump($array, 6);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...