我刚刚下载了symfony 3.3版本dev的骨架,尝试使用11月出版的下一个版本Symfony 4进行一些播放,因为此链接解释了http://fabien.potencier.org/symfony4-demo.html。
我无法创建一个简单的控制器并执行“Hello world”。
我只需在Controller文件夹中创建一个带有此代码的DemoController.php:
namespace App\Controller;//namespace App; <- WHAT I SHOULD PUT HERE?
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class DemoController extends Controller
{
public function demoAction()
{
return new Response("asdasd");
}
}
有人能写下我应该添加到routes.yaml的内容吗?在这种情况下,我决定不使用注释并使用routes.yaml。请求的路线应为“/ demo”。我试过这个......
index:
path: /demo
defaults: { _controller: 'App\Controller\DemoController::demo' }
我想最后可能出现这个问题。
除此之外,我应该修改bundles.php吗? 我试过这个......
return [
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
App\Controller::class => ['all' => true], <- NOT SURE IF IT'S LIKE THIS...
];
答案 0 :(得分:3)
以下是在http://fabien.potencier.org/symfony4-demo.html
的第一部分之后使用Symfony Flex 3.3.10的或多或少的极简主义示例composer create-project "symfony/skeleton:^3.3" flex33_10
cd flex33_10
composer require webserver
composer require cli
添加控制器
# src/Controller/DemoController.php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
#se Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class DemoController extends AbstractController
{
public function demoAction()
{
return new Response('aaabbb');
}
}
添加路线
# config/routes.yaml
demo:
path: /demo
defaults: { _controller: 'App\Controller\DemoController::demoAction' }
现在清除缓存(因为新添加的路由)并启动服务器
bin/console cache:clear
bin/console server:start
# browse to: http://127.0.0.1:8001/demo
希望一切顺利。
请注意,在定义路线时,您需要拼出完整的操作方法名称demoAction vs demo。不那么神奇。
请注意,对于新应用,您的控制器应该扩展AbstractController而不是旧的基本控制器。 AbstractController仍然为您提供所有您喜欢的控制器助手功能,但限制对容器的访问。您需要注入控制器所需的任何其他服务。
有趣的东西。享受。