Symfony 3.3 演示项目
Symfony 3.3 demo project
我刚刚下载了 symfony 3.3 版本开发的框架,尝试在 11 月发布的下一个版本 Symfony 4 上玩一下,因为这个 link 解释 http://fabien.potencier.org/symfony4-demo.html.
我无法创建一个简单的控制器并执行 "Hello world"。
我只是用这段代码创建了一个 DemoController.php,显然是在 Controller 文件夹中:
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...
];
这是一个或多或少的使用 Symfony Flex 3.3.10 的极简示例,紧随第一部分:http://fabien.potencier.org/symfony4-demo.html
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
希望一切都会好起来。
注意定义路由时需要拼出完整的action方法名demoAction vs demo。减少魔法。
请注意,对于新应用程序,您的控制器应该扩展 AbstractController 而不是旧的基本控制器。 AbstractController 仍然为您提供所有您喜欢的控制器辅助函数,但限制了对容器的访问。您将需要注入控制器所需的任何其他服务。
有趣的东西。享受吧。
我刚刚下载了 symfony 3.3 版本开发的框架,尝试在 11 月发布的下一个版本 Symfony 4 上玩一下,因为这个 link 解释 http://fabien.potencier.org/symfony4-demo.html.
我无法创建一个简单的控制器并执行 "Hello world"。
我只是用这段代码创建了一个 DemoController.php,显然是在 Controller 文件夹中:
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...
];
这是一个或多或少的使用 Symfony Flex 3.3.10 的极简示例,紧随第一部分:http://fabien.potencier.org/symfony4-demo.html
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
希望一切都会好起来。
注意定义路由时需要拼出完整的action方法名demoAction vs demo。减少魔法。
请注意,对于新应用程序,您的控制器应该扩展 AbstractController 而不是旧的基本控制器。 AbstractController 仍然为您提供所有您喜欢的控制器辅助函数,但限制了对容器的访问。您将需要注入控制器所需的任何其他服务。
有趣的东西。享受吧。