如何在Backpack for Laravel中添加select_from_array页面/创建

时间:2016-12-24 23:09:38

标签: backpack-for-laravel

我想添加一个从配置文件中获取数组的下拉字段。我试过这个,但收到了错误。

在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行中的ErrorException   19:未定义的索引:值(查看:   /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)   (视图:   /用户/ sokada /代码/ backpack-   CECI /供应商/背包/污物/ SRC /资源/视图/场/ select_from_array.blade.php)   在a1e88af9db4bb80b9055323bf64be621df2f9960.php第19行   CompilerEngine-> handleViewException(object(ErrorException),' 1')in   

的PhpEngine.php第44行

我试过这个as in the doc,但它仍然会出错。

$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:使用undefined   恒定的'一' - 假设'一'''在PageTemplates.php第114行中   HandleExceptions-> handleError(' 8','使用未定义的常量'one' -   假设''一个''',   ' /Users/sokada/Code/backpack-ceci/app/PageTemplates.php' ;,' 114',   PageTemplates.php第114行中的array())

这与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>

2 个答案:

答案 0 :(得分: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能够找到更好的解决方案。

答案 1 :(得分:0)

我知道这是一个&#34; old&#34;问题,但我遇到了同样的错误,用这个代码解决了它:

&#39;选项&#39; =&GT; [0 => &#34;被阻止&#34;,1 =&gt; &#34; OK&#34;,2 =&gt; &#34;代理&#34;,3 =&gt; &#34; DNS&#34],