-1

我想添加一个下拉字段,从配置文件中提取一个数组。我已经尝试过了,但出现错误。

在 config/gallery.php 中:

return [
    'column_num' => [
         ''=>'-- Choose one --', 
         'one' => 'Category: One column',
         'one-second'=> 'Category: Two columns',
         'one-third'=> 'Category: Three columns',
         'one-fourth'=> 'Category: Four columns',
         'one-fifth'=> 'Category: Five columns',
         'one-sixth'=> 'Category: Six columns',
    ],
];

在 app/PageTemplates.php

...
    $this->crud->addField([
                    'name' => 'column_num',
                    'label' => 'Number of columns',
                    'type' => 'select_from_array',
                    'options' => config('gallery.column_num'),
                    'fake' => true,
                    'store_in' => 'extras',
                ]);

====== 更新 =====

错误:

a1e88af9db4bb80b9055323bf64be621df2f9960.php 第 19 行中的 ErrorException:未定义索引:值(查看:/Users/sokada/Code/backpack-ceci/vendor/backpack/crud/src/resources/views/fields/select_from_array.blade.php)(查看:/ Users/sokada/Code/backpack-ceci/vendor/backpack/crud/src/resources/views/fields/select_from_array.blade.php)(查看:/Users/sokada/Code/backpack-ceci/vendor/backpack/crud/ src/resources/views/fields/select_from_array.blade.php) 在 a1e88af9db4bb80b9055323bf64be621df2f9960.php 第 19 行 CompilerEngine->handleViewException(object(ErrorException), '1') 在 PhpEngine.php 第 44 行

在文档中尝试了这个,但它仍然给出了一个错误。

$this->crud->addField([
    // select_from_array
    'name' => 'template',
    'label' => "Template",
    'type' => 'select_from_array',
    'options' => [‘one’ => ‘One’, ‘two’ => ‘Two’],
    'allows_null' => false,
    // 'allows_multiple' => true, // OPTIONAL; needs you to cast this to array in your model;
]);

错误

PageTemplates.php 第 114 行中的 ErrorException:在 PageTemplates.php 第 114 行中的 HandleExceptions->handleError('8', '使用未定义常量 'one' - 假定为 ''一个''', '/Users/sokada/Code/backpack-ceci/app/PageTemplates.php', '114', array()) 在 PageTemplates.php 第 114 行

这与这个 if 语句有关。

 <option value="{{ $key }}"
    @if ((isset($field['value']) && $key==$field['value'])
       || ( ! is_null( old($field['name']) ) && old($field['name']) == $key)
       || (is_array($field['value']) && in_array($key, $field['value'])) )
        selected
    @endif
 >{{ $value }}</option>
4

2 回答 2

0

我知道这是一个“旧”问题,但我遇到了同样的错误并用以下代码解决了它:

'options' => [0 => "Blocked", 1 => "OK", 2 => "Proxy" , 3 => "DNS"],

于 2017-05-16T13:20:32.510 回答
0

目前我需要将@foreach语句修改vendor/backpack/crud/src/resources/views/fields/select_from_array.blade.php为以下内容以避免错误。

        @if (count($field['options']))
            @foreach ($field['options'] as $key => $value)
                <option value="{{ $key }}"
                    @if ((isset($field['value']) && $key==$field['value'])
                        || ( ! is_null( old($field['name']) ) && old($field['name']) == $key)
                      )
                         selected
                    @endif
                >{{ $value }}</option>
            @endforeach
        @endif

我希望tabacitu会想出一个更好的解决方案。

于 2016-12-26T01:21:12.107 回答