Php 自动加载程序应在文件中定义类
我知道这个问题已经被问过很多次了,但我在网上找不到与我的问题相对应的解决方案。 因此,我创建了一个UserBundle,当我尝试访问登录页面时,出现以下错误: 自动加载程序需要在文件“C:\xampp\htdocs\lab/src\ET\Bundle\UserBundle\Controller\SecurityController.php”中定义类“ET\Bundle\UserBundle\Controller\SecurityController”。找到了文件,但类不在其中,类名或命名空间可能有输入错误 我已经检查了我的文件,如果我的名称空间或类名是好的,但我找不到错误 我的安全控制器:Php 自动加载程序应在文件中定义类,php,symfony,classloader,Php,Symfony,Classloader,我知道这个问题已经被问过很多次了,但我在网上找不到与我的问题相对应的解决方案。 因此,我创建了一个UserBundle,当我尝试访问登录页面时,出现以下错误: 自动加载程序需要在文件“C:\xampp\htdocs\lab/src\ET\Bundle\UserBundle\Controller\SecurityController.php”中定义类“ET\Bundle\UserBundle\Controller\SecurityController”。找到了文件,但类不在其中,类名或命名空间可能
<?php
namespace ET\UserBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\SecurityContext;
class SecurityController extends Controller{
public function loginAction(Request $request){
// Si le visiteur est déjà identifié, on le redirige vers l'accueil
if ($this->get('security.context')->isGranted(IS_AUTHENTIFICATED_REMEMBERED)){
return $this->redirect($this->generateUrl('et_home'));
}
$session = $request->getSession();
// On vérifie qu'il n'y a pas d'erreurs lors d'un précédente soumission de formulaire
if($request->attributes->has(SecurityContext::AUTHENTIFICATION_ERROR)){
$error = $request->attributes->get(SecurityContext::AUTHENTIFICATION_ERROR);
}else{
$error = $session->get(SecurityContext::AUTHENTIFICATION_ERROR);
$session->remove(SecurityContext::AUTHENTIFICATION_ERROR);
}
return $this->render('ETUserBundle:Security:login.html.twig', array(
'last_username' => $session->get(SecurityContext::LAST_USERNAME),
'error' => $error,
));
}
}
我的路由器:
login:
pattern: /login
defaults: { _controller: ETUserBundle:Security:login }
login_check:
pattern: /login_check
logout:
pattern: /logout
如果有人对我有什么想法,请告诉我。提前谢谢。
我已经在Symfony 2.6和2.7上尝试了这一点,并进行了新的安装。替换
namespace ET\UserBundle\Controller
bynamespace ET\Bundle\UserBundle\Controller\SecurityController
SecurityController.php的路径是什么?C:\xampp\htdocs\lab\src\ET\Bundle\UserBundle\Controller\n您的命名空间应该是ET\Bundle\UserBundle\Controller
,Bundle在ETOk之后,它可以工作,谢谢:)我不明白他们为什么要添加Bundle文件夹,但好的^^你必须正确地遵循文档:)实际上,用名称空间ET\Bundle\UserBundle\Controller替换它。答案在错误消息中。建议解决的路径不符合您的定义。将目录结构与命名空间进行比较,它们通常会匹配(除非映射了命名空间)。
login:
pattern: /login
defaults: { _controller: ETUserBundle:Security:login }
login_check:
pattern: /login_check
logout:
pattern: /logout