Drupal 8サイトでは、/ some/random/pathは "404 not found"を返します。実行時に、これらのパスの一部を傍受し、有効なものを返すように設定する必要があります。 ./src/Routing/RouteSubscriber.phpで、私が持っている、Drupal 8:404の経路を傍受し、200にコードを設定する
services:
mymodule.route_subscriber:
class: Drupal\MYMODULE\Routing\RouteSubscriber
tags:
- { name: event_subscriber }
その後:次に
<?php
namespace Drupal\MYMODULE\Routing;
use Drupal\Core\Routing\RouteSubscriberBase;
use Symfony\Component\Routing\RouteCollection;
class RouteSubscriber extends RouteSubscriberBase {
protected function alterRoutes(RouteCollection $collection) {
if ($route = $collection->get('system.404')) {
$route->setDefault('_controller', '\Drupal\MYMODULE\Controller\MyController::load');
}
}
}
./src/Controller/SpokeControllerで
は私がMYMODULE.services.yml
というファイルを追加しました.php、私は持っています:
class SpokeController extends ControllerBase {
public function load() {
$path = \Drupal::service('path.current')->getPath();
if (path_is_valid()) { // I can only do this at runtime.
// Is there a way to add something here like:
// $this->setResponseCode(200);
// return a render array for the content.
}
else {
// return a render array like "page not found".
}
}
}
私のコントローラでは、404から20に応答コードを変更できますか0? (私は存在する$this->setResponseCode(200)
のようなものを期待していますが、私はそれを見つけることができません。)