В настоящее время я пытаюсь настроить параметр маршрутизации в 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;
}
}
?>
Проблема заключается в том, что, когда я попытаться перейти к `LOCALHOST/app_dev.php/СМ, он дает мне следующую ошибку:
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/role
или localhost/app_dev.php/cms/role/view
, он дает мне правильную страницу. Я попытался добавить маршрут по умолчанию к /cms
, но он все равно дает мне ту же ошибку. Как это возможно и как я могу это исправить?
Заранее спасибо.
Прежде всего, вы должны решить между маршрутизацией по yaml или аннотацией. В зависимости от вашей конфигурации один не используется и только путает читателей и загромождает код! – Sgoettschkes
Извините, вы правы. Я добавил его, потому что я попытался, если бы это имело бы значение, но это не так. Я удалил его сейчас. – Rex