试图从命名空间 "App\Controller" 调用函数
Attempted to call function from namespace "App\Controller"
我尝试使用音译器来音译照片名称,但我不知道为什么我总是看到错误:
试图从命名空间 "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(),
]);
}
}
我不知道怎么解决。我现在正在学习一些课程,我复制了脚本以查看问题所在。复制后还是不行
这就是我自己解决这个问题的方法。
- 首先使用 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
它为我完成了工作。
您可以在 phpinfo() 中或使用命令
查看激活的模块
php -m
您还可以过滤提示
php -m |grep 'intl'
希望对您有所帮助
我尝试使用音译器来音译照片名称,但我不知道为什么我总是看到错误: 试图从命名空间 "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(),
]);
}
}
我不知道怎么解决。我现在正在学习一些课程,我复制了脚本以查看问题所在。复制后还是不行
这就是我自己解决这个问题的方法。
- 首先使用 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
它为我完成了工作。
您可以在 phpinfo() 中或使用命令
查看激活的模块php -m
您还可以过滤提示
php -m |grep 'intl'
希望对您有所帮助