【发布时间】:2020-09-12 00:47:57
【问题描述】:
我正在使用 symfony 框架进行培训,但遇到了障碍。我有这个前端控制器:
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
class FrontController extends AbstractController
{
/**
* @Route("/", name="main_page")
*/
public function index()
{
return $this->render('front/index.html.twig');
}
/**
* @Route("/public/video-list", name="video_list")
*/
public function videoList()
{
return $this->render('front/video_list.html.twig');
}
/**
* @Route("/video-details", name="video_details")
*/
public function videoDetails()
{
return $this->render('front/video_details.html.twig');
}
}
并且在 index.html.twig 我在一些链接中有以下内容:
<nav class="my-2 my-md-0 mr-md-3">
<a class="p-2 text-dark" href="{{ path('video_list') }}">Funny</a>
<a class="p-2 text-dark" href="{{ path('video_list') }}">Scary</a>
<a class="p-2 text-dark" href="{{ path('video_list') }}">Unbelievable</a>
<a class="p-2 text-dark" href="{{ path('video_list') }}">Inspirational</a>
<a class="p-2 text-dark" href="{{ path('video_list') }}">Motivating</a>
<a class="p-2 text-dark" href="admin/my_profile.php">My account</a>
</nav>
但是当我点击这些链接时,我得到object not found。当我在 URL 中尝试带有 public 的 URL 时,例如 /public/video-list/,它起作用了。我希望应用程序忽略 URL 上的这个 public 部分。我尝试将路由更改为 public/video-list,但也没有成功。
我在 Windows 8.1 上使用 Xampp,使用 Symfony 框架版本 5.1.2。我用 composer 安装了 apache-pack。如何调整这个项目以忽略这个 public 部分?
【问题讨论】:
-
您可以将 path('video_list') 生成的 url 添加到您的帖子中吗?此外,我个人会避免在我的 url 中使用 public 这个词,因为 public 文件夹确实存在。
-
无需与 Apache 混为一谈。只需使用Symfony development server。如果您坚持使用 apache,请调整您的 xampp 设置以指向公共目录而不是您的项目目录。这不是 Symfony 的问题。
-
请发布您的 Apache 虚拟主机配置。听起来您的
DocumentRoot设置为 Symfony 项目路径,但它应该设置为/path/to/symfony/public。对于 Xampp,默认的DocumentRoot通常是C:/xamp/htdocs,因此如果您将 symfony 项目安装在C:/xamp/htdocs中,您将使用C:/xamp/htdocs/public请参阅:symfony.com/doc/current/setup/web_server_configuration.html -
你能给我们看看路由yaml文件吗?