я использую generate:controller
создать новый контроллер в моем приложении Symfony 3. Но маршрут не найден.
Вот ввод / вывод команды …
First, you need to give the controller name you want to generate.
You must use the shortcut notation like AcmeBlogBundle:Post
Controller name: ApplicationSonataPageBundle:Page
Determine the format to use for the routing.
Routing format (php, xml, yml, annotation) [annotation]: yml
Determine the format to use for templating.
Template format (twig, php) [twig]:
Instead of starting with a blank controller, you can add some actions now. An action
is a PHP function or method that executes, for example, when a given route is matched.
Actions should be suffixed by Action.New action name (press <return> to stop adding actions): IndexAction
Action route [/Index]:
Template name (optional) [ApplicationSonataPageBundle:Page:index.html.twig]:
New action name (press <return> to stop adding actions):Summary before generationYou are going to generate a "ApplicationSonataPageBundle:Page" controller
using the "yml" format for the routing and the "twig" format
for templating
Do you confirm generation [yes]?
… и вот содержимое нового класса контроллера:
namespace Application\Sonata\PageBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class PageController extends Controller
{
public function IndexAction()
{
return $this->render('ApplicationSonataPageBundle:Page:index.html.twig', array(
// ...
));
}
}
… который не называется. Вместо этого я получаю следующую ошибку в браузере:
Маршрут не найден для «GET / Index»
Есть ли дополнительный шаг, который мне нужно сделать, прежде чем увидеть мое действие?
Что я пробовал: я до сих пор пробовал все другие типы маршрутизации (xml, php, yml) без успеха.
Есть несколько вещей, чтобы проверить:
Убедитесь, что ваши маршруты включены внутри config/routes.yml
https://symfony.com/doc/3.3/routing.html
https://symfony.com/doc/3.3/routing.html#loading-routes
https://symfony.com/doc/3.3/routing/external_resources.html
Также убедитесь, что ваш пакет загружен в ядро: app/AppKernel.php
https://symfony.com/doc/3.3/page_creation.html#bundles-configuration
Еще одна вещь, которую я заметил, ваше действие / маршрут пишется с большой буквы. Я не уверен, если это влияет на вещи, но обычная практика camelCasing
так что вы бы indexAction
скорее, чем IndexAction
Существует также команда, чтобы показать доступные маршруты, я думаю, что это что-то вроде php bin/console routes:debug
если вы бежите php bin/console
он должен показать вам доступные команды
Для чего это стоит: я просто сдался и скопировал следующее:
_index:
path: /Index
defaults: { _controller: ApplicationSonataPageBundle:Page:Index }
… из сгенерированного файла yml в основной файл моего приложения routing.yml.