繁体   English   中英

如何根据`Nova Laravel`中的select字段选项动态填充文本字段

[英]How to dynamically fill Text field based on select field option in `Nova Laravel`

如何根据 Nova Laravel 中的 select 框设置文本字段? (不使用库)

eg:如果用户选择Option为100, Option Name应该是“First Option”(options数组是动态调用的)

$options = [
    100 => "First Option"
    101 => "Second Option"
    102 => "Third Option"
  ];
Select::make('Option')->options($options),
Text::make('Option Name')->readonly();

在同样的情况下,我使用了 NovaAjaxSelect\AjaxSelect

对于有人遇到同样的问题。 我在 laravel nova4 上使用了这个。

            $options = [
                100 => "First Option",
                200 => "Second Option"
            ];
            Select::make('Options')->options(
                $options
            )->required(),
            Text::make('Option Name')->readonly()->dependsOn(
                ['options'],
                function (
                    Text $field,
                    NovaRequest $request,
                    FormData $formData
                ) use ($options) {
                    $field->default(function ($request) use ($formData, $options){
                        return $options[$formData->options];
                    });
                }
            ),

您可以创建 CustomText 并扩展文本字段。 覆盖 resolveDefaultValue。 用这个 function。

您的字段将听取其他字段并将您的文本字段的值更改为您的选择。

    /**
     * Resolve the default value for the field.
     *
     * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request
     * @return mixed
     */
    protected function resolveDefaultValue(NovaRequest $request)
    {
        if ($this->defaultCallback instanceof Closure) {
            return call_user_func($this->defaultCallback, $request);
        }

        return $this->defaultCallback;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM