带有 404 页面的 Silex

Silex with 404 page

我在 controllers/Redirect/Myredierct 中创建控制器。php 我有这样的代码

<?php

namespace MyApp\Controllers\Redirect;

use Silex\Application;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;


abstract class errorController 
{
    public function errorAction(Application $app)
    {
      $app->error(
        function(\Exception $e) use ($app) {
            if($e instanceof NotFoundHttpException && $e->getStatusCode() == 404) {
                return $this->app['twig']->render('error.html.twig');
            }
        }
    );}
}

我的问题是我必须在哪里包含它?我不明白如何使用我的代码。请帮我解决这个问题。

您的 post 中有两个问题:404 状态和如何使用您的抽象控制器。

首先,您的文件 / class 的命名有误:您的 class 应该像文件一样命名。此外,我不知道这是强制性的还是只是好的做法,但您的文件应始终以 "Controller" 结尾,所以我要做的是将您的文件重命名为 "ErrorController.php",并将您的 class 到 "ErrorController".

现在,您有一个抽象 class,这意味着它旨在通过继承由另一个控制器使用。使用它的方法是创建一个像这样的新控制器:

<?php

namespace MyApp\Controllers;

class YourControllerName extends errorController {
     // Whatever you want
     public function whateverAction(Application $app)
     {
     // You can use you parent controller this way
     $this->errorAction($app);
          ...
     return $response;
     }
} 

希望对您有所帮助。