Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yaml 在Drupal8中是否可以将参数传递给表单?_Yaml_Form Api_Drupal 8 - Fatal编程技术网

Yaml 在Drupal8中是否可以将参数传递给表单?

Yaml 在Drupal8中是否可以将参数传递给表单?,yaml,form-api,drupal-8,Yaml,Form Api,Drupal 8,想象一个YAML路由配置,如下所示: foobar.example: path: 'example/{entity_type}/{bundle_name}' defaults: _form: '\Drupal\foobar\Form\FoobarExampleForm' _title: 'Example Form' foo: 0 bar: 1 参数foo和bar将传递给控制器,但如何将参数传递给窗体?我意识到可以使用arg或menu get对象检索实体类

想象一个YAML路由配置,如下所示:

foobar.example:
  path: 'example/{entity_type}/{bundle_name}'
  defaults:
    _form: '\Drupal\foobar\Form\FoobarExampleForm'
    _title: 'Example Form'
    foo: 0
    bar: 1

参数foo和bar将传递给控制器,但如何将参数传递给窗体?我意识到可以使用arg或menu get对象检索实体类型和bundle名称。是否有其他方法将参数传递给表单?

我认为这可能不是最好的解决方案,但arg可以帮助您。调用表格arg0将为您提供“示例”,arg1将为{entity_type}和arg2提供{bundle_name}

如果您要求将附加值传递到未由路由加载的表格中,请执行以下操作:

public function buildForm(array $form, FormStateInterface $form_state, $item = array()) { 
  // Form code here
}
当你叫它的时候,就这样做

$form = \Drupal::formBuilder()->getForm('\Drupal\MYMODULE\Form\MYFORMCLASS', $item);
重要提示:如果在声明函数时没有给它一个默认值,则会得到一个PHP致命错误。因此,在没有=数组的情况下不要执行此操作:

public function buildForm(array $form, FormStateInterface $form_state, $item) {

你可以得到像这样的变量foo和bar

public function buildForm(array $form, FormStateInterface $form_state, $foo = NULL, $bar = 1) {
   echo $foo;
   echo $bar;
}