php - 试图从命名空间 "App\Controller"调用函数

标签 php symfony5

我尝试使用音译器来音译照片名称,但我不知道为什么我总是看到错误:
试图从命名空间“App\Controller”调用函数“transliterator_transliterate”。

这是一个代码:

<?php

namespace App\Controller;

use App\Entity\Photo;
use App\Form\UploadPhotoType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;

class IndexController extends AbstractController
{
    /**
     * @Route("/", name="index")
     * @param Request $request
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function index(Request $request)
    {
        $form = $this->createForm(UploadPhotoType::class);

        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {
            $em = $this->getDoctrine()->getManager();

            if ($this->getUser()) {
                /** @var UploadedFile $pictureFileName */
                $pictureFileName = $form->get('filename')->getData();
                if ($pictureFileName) {
                    try {
                        $originalFileName = pathinfo($pictureFileName->getClientOriginalName(), PATHINFO_FILENAME);
                        $safeFileName = transliterator_transliterate('Any-Latin; Latin-ASCII; [^A-Za-z0-9_] remove; Lower()', $originalFileName);
                        $newFileName = $safeFileName.'-'.uniqid().'.'.$pictureFileName->guessExtension();
                        $pictureFileName->move('images/hosting', $newFileName);

                        $entityPhotos = new Photo();
                        $entityPhotos->setFilename($newFileName);
                        $entityPhotos->setIsPublic($form->get('is_public')->getData());
                        $entityPhotos->setUploadedAt(new \DateTime());
                        $entityPhotos->setUser($this->getUser());

                        $em->persist($entityPhotos);
                        $em->flush();
                        $this->addFlash('success','Dodano zdjęcie!');
                    } catch (\Exception $e) {
                        $this->addFlash('error', 'Wystąpił nieoczekiwany błąd!');
                    }
                }
            }
        }

        return $this->render('index/index.html.twig', [
            'form' => $form->createView(),
        ]);
    }
}

我不知道如何修复它。我现在正在学习一些类(class),我复制了脚本以查看哪里出了问题。复制后还是不行

最佳答案

这就是我如何解决这个问题的方法。

  • 首先使用 phpinfo() 验证您使用的 PHP 版本;
  • 安装对应的国际扩展:apt-get install php7.X-intl
  • 编辑你的 php.ini:vim/etc/php/7.X/cli/php.ini
  • 搜索行 ;extension=intl
  • 通过删除“;”取消注释
  • 重启 Apache 2:service apache2 restart

  • 它为我完成了工作。

    关于php - 试图从命名空间 "App\Controller"调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62370653/

    相关文章:

    php - 如何在表单中列出查询结果(EntityType)

    symfony - 商店用品 6 : How to add Products with variation as childrens to Parent Products in LineItems

    symfony - 我怎样才能查看 Twig 中的所有项目?

    php - 使用电子邮件 channel 时,如何使用 Notifier 将通知作为 HTML 内容发送?

    php - 如何使用php将数据插入到包含外键的表中?

    php - 我如何对数据库中的值进行计数和求和

    php - 按值(value)分组

    php - Doctrine 如何在 MySQL 中为我创建表?

    php - Symfony 5 $form->isSubmitted() 为文件上传返回 False

    heroku - symfony5 - heroku - 找不到网址 404