Symfony 3.3演示项目

时间:2017-10-11 11:27:33

标签: symfony controller symfony-3.3

我刚刚下载了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...
];

1 个答案:

答案 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仍然为您提供所有您喜欢的控制器助手功能,但限制对容器的访问。您需要注入控制器所需的任何其他服务。

有趣的东西。享受。