Laravel 正在将“@”转换为代码的表单生成器字符串

Laravel Form Builder String with '@' being transformed into a code

我在使用 laravel 形式 select 中带有“@”符号的值时遇到问题。似乎所有带有“@”的字符串都被转换为代码。但这只发生在服务器上(这是一个 centOS 服务器)。但在我的本地机器上正常工作。

下图是在我的本地应该是这样的。

那么在CentOS服务器中是这样的

我该如何解决这个问题?它是在服务器的设置中还是我需要对此有所了解?我试图为它们的值添加一个 htmlentities,但仍然像那样工作。不太确定是什么导致它在 centOS 中不起作用。感谢您的回复。

这就是 json object 在配置文件中的表述方式。

   'group'=>[
            'type'=>'choice',
            'optional'=>[
                'label' => 'Group',
                'choices'=>function(){
                    return Modules\Group\Entities\Group::all()->lists('name','id')->toArray();
                },
                // 'multiple' => true,
                'attr' => ['multiple' => 'multiple', 'class' =>'multiselect-checkbox']
            ]
        ],

这是关于它们如何呈现的视图。这是一个 php 文件而不是 blade 文件。

<?= Form::select($name, (array)$emptyVal + $options['choices'], $options['selected'], $options['attr']) ?>

你在blade中使用了错误的标签<?= ?>用大括号代替{!! !!}{{ }}这一切都取决于你的策略,我建议你看看documentation.

你的代码应该是这样的:

{!! Form::select($name, (array)$emptyVal + $options['choices'],
                       $options['selected'], $options['attr']) !!}

By default, Blade {{ }} statements are automatically sent through PHP's htmlentities function to prevent XSS attacks.

请检查documentation

感谢@Jonathon 知道我 {!! !!} 我要快速敲击键盘。