今晚要开始一个Symfony项目;
那么通过官网学习了
下载创建一个Symfony项目原型:一个全功能的Symfony程序;
然后阅读了如何创建一个页面;
如何使用路由;
第一创建一个Symfony项目原型,
我使用的是composer,如下命令:
composer create-project symfony/framework-standard-edition my_project_name;
创建完这个原型,我执行php bin/console server:run,可以跑起来;
学习新技能:
1:经常使用composer update可以防止bug和漏洞;
2:定期执行php bin/console security:check,可以检查重大安全漏洞;
3:要程序运行,执行composer install;下载和安装程序所需的全部依赖:
第二创建一个Symfony的页面
controller和Routing,template :
我并没有继续写代码只是在看文档,所以此刻记录下重点:
1:一个控制器必须返回一个Symfony的Response对象
2:在控制器中返回的Response
对象可以包含HTML,JSON甚至二进制文件比如图片或PDF,设置HTTP头信息或HTTP状态码
3:返回一个json如:
$data = array(
'lucky_number' => rand(0, 100),
);
return new Response(
json_encode($data),
200,
array('Content-Type' => 'application/json')
);
可以再简化如:
$data = array(
'lucky_number' => rand(0, 100),
);
// calls json_encode and sets the Content-Type header
// 自动调用json_encode并设置Content-Type头
return new JsonResponse($data);
4:URL:
/**
* @Route("/lucky/number/{count}")
*/
其中{count}叫做通配符,只要方法中传一样名称的变量就可以取到它,可以传多个参数;
模板:
1:其中使用templating服务,这样取:
$html = $this->container->get('templating')->render(
'lucky/number.html.twig',
array('luckyNumberList' => $numbersList)
);
return new Response($html);
2:templating
服务,是TwigEngine
的实例,里面有个render()
方法;
3:服务容器”,它拥有很多对象,然后你可以通过“昵称”(比如templating
或logger
)利用get()
来得到其中的任何一个对象;
4:各个包的目录结构;
第三路由系统
symfony路由系统的目的是解析url,并确定调用哪个控制器。整个过程是这样的:
-
由Symfony的前端控制器(如
app.php
)来处理请求。 -
symfony的核心(Kernel内核)要求路由器来检查请求。
-
路由将输入的URL匹配到一个特定的路由,并返回路由信息,其中包括要执行的控制器信息。
-
Symfony内核执行控制器并最终返回
Response
对象
页面里使用url
<a href="{{ path('blog_show', {'slug': 'my-blog-post'}) }}"> Read this blog post. </a>