【发布时间】:2019-10-24 19:24:23
【问题描述】:
我正在使用 Symfony YAML 组件来建模和输出一个 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);
任何人都可以帮助我走上正轨:)?
**
- 更新
**
我已经按照 cmets 中的提示更新了 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
所以我移动了一点,但仍然得到“组件:我的组件”而不是“-组件:我的组件”。关于解决最后一个问题的任何提示:)?
【问题讨论】:
-
dump()方法的第二个参数用于控制转储程序在哪个级别切换到内联表示法。它的默认值为2。您可能希望像这样为您的用例增加它:$yaml = Yaml::dump($array, 4); -
@xabbuh 我试过了,但输出完全一样:/
-
我可以看到不同的结果。你使用哪个版本的 Yaml 组件?
-
好的,确实如此——现在它改变了。唯一的问题是,在符号中,它仍然保持为“component: MyComponent”而不是“-component: MyComponent”
标签: php html arrays symfony yaml