現在、Symfony2でルーティングオプションを設定しようとしています。/cms
は/cms/role/view
にルーティングされます。しかし、デフォルトの受け渡しは適切に機能していないようです。symfony2ルーティングのデフォルトが正しく渡されない
/src/MyProject/CMSBundle/Resources/config/routing.yml
MyProjectCMS_specific:
pattern: /cms/{page}/{option}
defaults: { _controller: MyProjectCMSBundle:Main:index, page: role, option: view }
requirements:
_method: GET
/src/MyProject/CMSBundle/Controller/MainController.phpは
<?php
namespace MyProject\CMSBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class MainController extends Controller
{
public function indexAction($page, $option)
{
$response = null;
/* Switch statement that determines the page to be loaded. */
return $response;
}
}
?>
問題があるときにI私がしようとした場合、しかし、
Controller "MyProject\CMSBundle\Controller\MainController::indexAction()" requires that you provide a value for the "$page" argument (because there is no default value or because there is a non optional argument after this one).
500 Internal Server Error - RuntimeException
: `localhost /をapp_dev.php/CMS'に行くことにしようと、それは私に次のエラーを与えますlocalhost/app_dev.php/cms/role
またはlocalhost/app_dev.php/cms/role/view
にアクセスすると、正しいページが表示されます。私は/cms
へのデフォルトルートを追加しようとしましたが、それでも私には同じエラーが表示されます。これはどのように可能ですか?これをどのように修正できますか?
ありがとうございます。
まず、yamlによるルーティングと注釈によるルーティングのどちらかを決定する必要があります。あなたの設定に応じて、1つは使用されず、読者だけを混乱させ、コードを混乱させます! – Sgoettschkes
申し訳ありませんが、あなたは正しいです。私はそれが差をつけるかどうか試したので追加しましたが、それはしませんでした。私は今それを削除しました。 – Rex