Encore\Admin\Auth\Database\Menu::buildSelectOptions PHP Method

buildSelectOptions() public static method

Build options of select field in form.
public static buildSelectOptions ( array $elements = [], integer $parentId, string $prefix = '' ) : array
$elements array
$parentId integer
$prefix string
return array
    public static function buildSelectOptions(array $elements = [], $parentId = 0, $prefix = '')
    {
        $prefix = $prefix ?: str_repeat(' ', 6);
        $options = [];
        if (empty($elements)) {
            $elements = static::orderByRaw('`order` = 0,`order`')->get(['id', 'parent_id', 'title'])->toArray();
        }
        foreach ($elements as $element) {
            $element['title'] = $prefix . ' ' . $element['title'];
            if ($element['parent_id'] == $parentId) {
                $children = static::buildSelectOptions($elements, $element['id'], $prefix . $prefix);
                $options[$element['id']] = $element['title'];
                if ($children) {
                    $options += $children;
                }
            }
        }
        return $options;
    }

Usage Example

 /**
  * Make a form builder.
  *
  * @return Form
  */
 public function form()
 {
     return Admin::form(Menu::class, function (Form $form) {
         $form->display('id', 'ID');
         $options = [0 => 'Root'] + Menu::buildSelectOptions();
         $form->select('parent_id', trans('admin::lang.parent_id'))->options($options);
         $form->text('title', trans('admin::lang.title'))->rules('required');
         $form->text('icon', trans('admin::lang.icon'))->default('fa-bars')->rules('required');
         $form->text('uri', trans('admin::lang.uri'));
         $form->multipleSelect('roles', trans('admin::lang.roles'))->options(Role::all()->pluck('name', 'id'));
         $form->display('created_at', trans('admin::lang.created_at'));
         $form->display('updated_at', trans('admin::lang.updated_at'));
     });
 }