我目前正在开发一个Flex PHP应用程序,我遇到了一个问题:我想要显示笔记创建者的用户名(在我的情况下),并且我想使该字段在FIREMENT中不可修改.所以我想到了这一点:

        Select::make('user_id')
                            ->options([
                                User::query()
                                    ->select([
                                        DB::raw("name as name"),
                                        'id',
                                    ])
                                    ->where('id', auth()->id())
                                    ->pluck('name', 'id')
                                    ->toArray()
                            ])
                            ->default(
                                auth()->id()
                            )->label(__('messages.created_by'))
                            ->disabled(),

如果我禁用该字段,则不会向数据库写入任何内容.我得到的基本上是零.

有没有办法禁用该字段并确保将用户ID写入数据库?

推荐答案

禁用的HTML输入将为not submit.

布尔禁用属性如果存在,则使元素不可变、不可聚焦或不可even submitted with the form.

您可以考虑将readOnlydefault一起使用,但它在SELECT上不可用,而且这是合理的,因为如果它是SELECT,它怎么会是ReadOnly字段?

您可能希望使用具有如下缺省值的文本输入:

Forms\Components\TextInput::make('user_id')
    ->default(
        auth()->id()
    )
    ->readOnly()
    ->label(__('messages.created_by')),

Updated:如果您想要显示用户名,可以使用两个输入,如下所示:

Forms\Components\Hidden::make('user_id')
    ->default(
        auth()->id()
    ),

Forms\Components\TextInput::make('user_name')
    ->default(
        auth()->user()->name
    )
    ->label(__('messages.created_by'))
    ->disabled(),

隐藏的用户ID,旁边显示用户名

Update 2: 您可以在创建页面中使用mutateFormDataBeforeCreate,并在创建对象之前自定义表单数据.您将需要前一个解决方案中的用户名字段,并使用下面的解决方案作为用户的id.下面是一个例子:

...
use Filament\Facades\Filament;


class CreatePost extends CreateRecord
{
    ...
    protected function mutateFormDataBeforeCreate(array $data): array
    {
        $data['user_id'] = Filament::auth()->id();;
        return $data;
    }
}

以这种方式保存敏感数据更安全.

Php相关问答推荐

Laravel迁移返回SQL错误,但SQL有效且工作正常

WooCommerce中仅在单一产品和产品档案页面中将小数设置为大写

WordPress:将自定义单选输入字段添加到用户配置文件

在特定订单状态更改时自定义WooCommerce订单发货项目

获取并判断WooCommerce用户订阅结束日期

根据选定的字段值显示或隐藏WooCommerce注册字段

在PHP 8.2 Gloogle云引擎上加载大型php文件速度缓慢

WooCommerce在购物车项目中复制产品而不增加产品数量

从WooCommerce订单项目获取Dokan卖家详细信息

在php中计算两个没有假期的日期之间的小时差

woocommerce checkout 页面上的自定义字段

WooCommerce 按产品运输插件:仅收取较高的运输费用

计算添加到购物车的点击次数并将其显示在 WooCommerce 管理产品列表中

循环中未序列化数组显示的问题

注册命名空间后如何获取xml node 值?

如何通过帖子自定义元数据进行查询

基于WooCommerce中的产品变体自定义感谢页面跳转

保留 .htaccess 中的符号登录 URL

如果有很多重定向,PHP curl 的行为不像命令行 curl

如何通过本地主机在同一台 PC 上同时运行 Microsoft IIS 和 WAMP