带有 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;
}
}
希望对您有所帮助。
我在 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;
}
}
希望对您有所帮助。