Symfony学习笔记---2.1 创建第一个页面

出自<https://openclassrooms.com/courses/developpez-votre-site-web-avec-le-framework-symfony/mon-premier-hello-world-avec-symfony>


网站的路径(Route或chemin)让Symfony知道哪个控制器运行


1.Créons notre route 创建路径

我们在刚创建的OCPlatformBundle中执行操作,所以先进入src/OC/PlatformBundle

创建页面,首先要让该URL可访问,所以要先创建路径。

Routeur 的作用是使参数和URL对应,下面的图解释了router的作用:

URL需要的是/hello-world,对应的控制器是Advert。


1.创建我们的route文件


    该文件在我们创建bundle的时候已经自动生成了,是Resources/config/routing.yml。我们在其中添加:

hello_the_world :
path : /hello-world
    defaults: { _controller: OCPlatformBundle:Advert:index }

这样我们就创建了第一个路径。

注意:

    1 首行缩进是4个空格,不包含制表符。这么提醒是将来可能会遇到相应的问题。

    (个人实际操作:在这里没有区别)

    2 如果你是复制黏贴的,可能会遇到错误。问题原因可能在于为你文件编码转换(UTF-8)。

hello_the_world 是你路径的名字,命名随意,除了不能重复。

path 是你想要显示的路径

defaults 是你路径的参数

    _controller是我们想要让控制器执行的行为


OCPlatformBundle:Advert:index

    Bundle:要打开的控制器:该控制器的一种执行方法

Advert与src/OC/PlatformBundle/Controller/AdvertController.php对应。


2 Informons Symfony que nous avons des routes pour lui

告诉symfony我们创建了路径

我们其实可以直接在app/config/routing.yml中添加路径,这样更快。但这样与我们将内容分成bundle的宗旨不符。

En effet, cette route concerne le bundle de notre plateforme, elle doit donc se trouver dans notre bundle et pas ailleurs. N'oubliez jamais ce principe.

这个route与我们的bundle相关,所以他应该在我们的bundle中而不是在外部。所以我们只应在src/OC/PlatformBundle/Resources/config/routing.yml中改route。


3 创建我们控制器

  控制器的角色:

1、控制器是我们网站的胶水。

2、他使用所有其他组件(数据库,表单,模板等)为了生成对我们请求的回复。

3、在这里有我们网站的所有逻辑:如果用户连接并有权限修改文章,那么我能打印出这个blog的编辑表单。

创建我们的控制器:

1、我们控制器Advert文件

控制器在目录Controller中。我们需要创建文件src/OC/PlatformBundle/Controller/AdvertController.php

<?php
// src/OC/PlatformBundle/Controller/AdvertController.php
namespace OC\ PlatformBundle\ Controller;
use Symfony\ Component\ HttpFoundation\ Response;
class AdvertController
{
public function indexAction ( )
{
return new Response ( "Notre propre Hello World !" );
}
}

这时我们访问http://localhost/Symfony/web/app_dev.php/hello-world会有我们刚创造的页面。

理解这个文件:

行5:让我们处于我们这个bundle的控制器命名空间里

行7:我们控制器运用Response对象,所以我们需要定义运用

行11:定义方法indexAction,需要加入后缀Action。

行13:创建响应response


4. 创建模板Twig

Twig是一个动态生成网页模板的引擎。


    1、创建模板文件

放模板的地方在Resources/views文件夹,在这里我们要创建我们的Advert文件夹和index.html.twig文件,因此我们有了src/OC/PlatformBundle/Resources/views/Advert/index.html.twig

index : 模板的名。

html :模板内容的类型。

twig :模板的类型。

模板中写:

<! DOCTYPE html >
< html >
< head >
< title > Bienvenue sur ma première page avec OpenClassrooms ! </ title >
</ head >
< body >
< h1 > Hello World ! </ h1 >
< p >
Le Hello World est un grand classique en programmation.
Il signifie énormément, car cela veut dire que vous avez
réussi à exécuter le programme pour accomplir une tâche simple :
afficher ce hello world !
</ p >
</ body >
</html>

    2、 控制器调用模板

调用模板的方法在indexAction()中,我们修改AdvertController.php:

<?php
// src/OC/PlatformBundle/Controller/AdvertController.php
namespace OC\ PlatformBundle\ Controller;
// N'oubliez pas ce use :
use Symfony\ Bundle\ FrameworkBundle\ Controller\ Controller;
use Symfony\ Component\ HttpFoundation\ Response;
class AdvertController extends Controller
{
public function indexAction ( )
{
$content = $this -> get ( 'templating' ) -> render ( 'OCPlatformBundle:Advert:index.html.twig' );
return new Response ( $content );
}
}

render中:NomDuBundle:NomDuContrôleur:NomDeLAction

$this->get('templating')是什么?这个是从控制器中返回一个对象temlpating,该对象可以执行一些actions。

现在我们访问http://localhost/Symfony/web/app_dev.php/hello-world会看到我们更改后的内容。


现在如果我们想要在twig运用变量,我们可以修改控制器:

<?php
$content = $this
-> get ( 'templating' )
-> render ( 'OCPlatformBundle:Advert:index.html.twig', array ( 'nom' => 'winzou' ))
;

然后我们修改twig:<h1>Hello {{ nom }} !</h1>



现在程序中多余可以删除的地方:

控制器:Controller/DefaultController.php

vue目录:Resources/views/Default

Resources/config/routing.yml中路径oc_platform_homepage

还可以删除所有和AppBundle相关的(这是和symfony2相关的):

-目录:src/AppBundle

-app/AppKernel.php19行用来激活new AppBundle\AppBundle()

-app/config/routing.yml5-7行用来引入AppBundle路径文件的app: resource: "@AppBundle/Controller/" type: annotation"

-app/config/services.yml17-35行

删除文件后,刷新页面可能会产生问题。这是因为缓存的原因。我们可以用指令:php bin/console cache:clear(在prod环境中:php bin/console cache:clear --env=prod)来清理缓存



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博删除。 6、可私信博看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博删除。 6、可私信博看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博删除。 6、可私信博看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值