8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

带有特殊字符的 Symfony 表单

Adil 2月前

59 0

我有一个 Symfony 6.4 Webapp 并使用 Form Builder。它运行正常,但我有一个外部数据源。(Active Directory)如果表单必须加载带有特殊字符的条目(在

我有一个 Symfony 6.4 Webapp 并使用 Form Builder。它运行正常,但我有一个外部数据源。(Active Directory)

如果表单必须加载带有特殊字符的条目(在德语中我们有\'ä\' \'ö\' \'ü\' 等等),我就会得到一个异常。

名称 group_with_special_characters 包含非法字符。名称应以字母、数字或下划线开头,且仅包含字母、数字、下划线 (\'_\')、连字符 (\'-\') 和冒号 (\':\')。

这是我在 FormularType 中的代码:

class AssignedGroupsType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        foreach ($options['assignedGroups'] as $groupName => $groupDN) {
            $builder->add($groupName, CheckboxType::class, [
                'label' => $groupName,
                'value' => $groupDN,
                'required' => false,
            ]);
        }
    }

    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults([
            'data_class' => null,
        ]);

        $resolver->setDefined(['assignedGroups']);
    }
}

在 GitHub 项目页面上,我发现了一个 已关闭的问题 ,可能的解决办法是设置 'expanded' => false,但这不起作用。因为我们生活在 2024 年,我想创建一个现代 Web 应用程序,所以我不能接受将字符从 \'ö\' 转换为 \'oe\',将 \'ä\' 转换为 \'ae\' 等等。

base.html.twig 模板以以下内容开头:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
[...]
帖子版权声明 1、本帖标题:带有特殊字符的 Symfony 表单
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Adil在本站《symfony》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我目前正在使用 next-auth v5,并尝试将 accessToken 与用户信息一起存储在我的 auth.ts 文件中。但是,我在实现这一点时遇到了一些困难。我尝试过...

    我目前正在使用 next-auth v5,并尝试将 accessToken 与用户信息一起存储在我的 auth.ts 文件中。但是,我在实现这一点时遇到了一些困难。我尝试了各种方法,但到目前为止还没有成功。

    这是我的 auth.ts 文件:

      "use server"
    
    import {z} from "zod"
    import NextAuth, { AuthError, User } from 'next-auth';
    import Credentials from 'next-auth/providers/credentials';
    import { AuthConfig } from '@/app/auth.config';
    import axios, { AxiosResponse } from "axios";
    
    import type { DefaultSession } from 'next-auth';
    
    declare module 'next-auth' {
      interface Session {
        user: {
          accessToken: string;
        } & DefaultSession['user'];
      }
    
      interface User {
        accessToken: string;
      }
    }
    
    let authURL = process.env.NEXT_PUBLIC_AUTH_URL
    async function getUser(username: string,password:string): Promise<User | undefined> {
      let credentials = {
        username : username,
        password : password
      }
      try {
        const response : AxiosResponse<User> = await axios.post(`${authURL}/api/v1/User/Login`, credentials);
        return response?.data;
    } catch (error : any) {
        throw new Error("Failed to authenticate user.")
    }
    }
    
     //authenticate
    export async function authenticate(
      prevState: string | undefined,
      formData: FormData,
    ) {
      try {
        await signIn('credentials', formData);
      } catch (error) {
        if (error instanceof AuthError) {
    
              return 'Invalid Credentials.';
    
        }
        throw error;
      }
    }
    
    export const { auth, signIn, signOut } = NextAuth({
      ...AuthConfig,
      providers: [
        Credentials({
          async authorize(credentials) {
            const parsedCredentials = z
              .object({ username: z.string(), password: z.string().min(6)})
              .safeParse(credentials);
     
            if (parsedCredentials.success) {
              const { username, password} = parsedCredentials.data;
              const user = await getUser(username, password);
              if (!user)
                 return null;
    
              console.log("User => ", user)
              return {
                id: user.id,
                name: user.name,
                email: user.email,
                accessToken: user.accessToken 
              };
            }
    
            console.log('Invalid credentials')
     
            return null;
          },
        }),
      ],
      callbacks: {
        async jwt({ token, user }) {
          if (user) {
            token.accessToken = user.accessToken;
          }
          return token;
        },
        async session({ session, token }) {
          if (session.user) {
            session.user.accessToken = token.accessToken as string;
          }
          return session;
        },
      },
    
    });
    

    请帮忙,我犯了什么错误?如果有人能提供一些指导或建议,说明如何在 next-auth v5 中正确存储带有用户信息的 accessToken,我将不胜感激。任何示例或代码片段都对我理解实现这一点的正确方法非常有帮助。提前感谢您的帮助!

返回
作者最近主题: