路由可以在全局定义,也可以在单个bundle内部定义
全局定义:app/config/routing.yml
局部bundle定义:src/Miyaye/webBundle/Resources/config/routing.yml
 
注意路由的变量名 和 控制器内方法的形参必须一致
 
php app/console router:debug 可以查看所有的路由
 
每个方法都有一个response对象
public function indexAction($count, $firstName)
{
return new Response('It\'s a traaaaaaaap!');
}
 
控制器渲染模板:
public function indexAction($count, $firstName)
{
return $this->render(
'EventBundle:Default:index.html.twig',
array('name' => $firstName)
);
}
 
模板twig    
twig语法文档:http://twig.sensiolabs.org/documentation
使用变量{{ name }}

也可以打印变量 <?php echo $name;?>

表达式:{%   %}

{% for i in ..count %}
Hello <strong>{{ name }}</strong> # {{ i }}!<br/>
{% endfor %}
注释:{# Hello comments! #}
过滤:
Hello <strong>{{ name|upper }}</strong>
模板继承:定义一个基础模板,app/Resources/views/base.html.twig
{# app/Resources/views/base.html.twig #}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
</html>
继承上面的模板:
{# src/Yoda/EventBundle/Resources/views/Default/index.html.twig #}
{% extends '::base.html.twig' %}
{% block body %}
{# ... the rest of the template ... #}
{% endblock %}

::base.html.twig 模板命名有讲究

模板文件名由三部分组成:bundle,子文件夹,模板文件

在上面的模板例子中,bundle 和子文件夹是缺失的

看下面的例子:

/bundle/子目录/模板文件

EventBundle:Default:index.html.twig:src/Yoda/EventBundle/Resources/views/Default/index.html.twig

/bundle/模板文件

EventBundle::index.html.twig:src/Yoda/EventBundle/Resources/views/index.html.twig

/模板文件

::base.html.twig:app/Resources/views/index.html.twig

Doctrine2的基本概念
1.实体对象-Entity
  字段
  关系
2.对象操作集合-Repository
  有统一的数据库方法
3.Proxy Class
  动态根据关系查询数据库
4.DQL
5.事件监听机制 自动添加时间字段

从无到有:设计,配置,生成数据库
  设计数据库关系和主要字段
  配置symfony2数据库连接
  配置entity
  生成get/set/repository
  生成真实数据库

/*只返回一条记录*/
$user = $em->getRepository('User')->findOneBy(array('id'=>));
/**修改id为1的name字段**/
$user->setName('Miyaye');
/*实例化,同步到数据库*/
$em->persist($user);
$em->flush(); /*DQL语句*/
$query = $em->createQuery(
'select u from DataBundle:User p where u.name = :name'
)->setParameter('name','Alice'); /*使用querybuilder生成dql语句*/
$query2 = $em->getRepository('User')->createQueryBuilder('U')
->where('u.name = :name')
->setParameter('name','Alice')
->getQuery();

创建Entity
php app/console doctrine:generate:entity
The Entity shortcut name:MiyayewebBundle:User

生成User表以及repository get set方法
generate:doctrine:entities
1.通过generate:doctrine:entity 选空repository
生成一个空的entity
2.通过generate:doctrine:entities Bundle
生成entity的方法 和 repository

<?php

namespace Miyaye\webBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="UserRepository")
*/
class User
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string")
*/
protected $username;
/**
* @ORM\Column(type="string")
*/
protected $password; /**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
} /**
* Set username
*
* @param string $username
* @return User
*/
public function setUsername($username)
{
$this->username = $username; return $this;
} /**
* Get username
*
* @return string
*/
public function getUsername()
{
return $this->username;
} /**
* Set password
*
* @param string $password
* @return User
*/
public function setPassword($password)
{
$this->password = $password; return $this;
} /**
* Get password
*
* @return string
*/
public function getPassword()
{
return $this->password;
}
}


symfony2笔记的更多相关文章

  1. Symfony2 学习笔记之系统路由

    mfony2 学习笔记之系统路由   漂亮的URL绝对是一个严肃的web应用程序必须做到的,这种方式使index.php?article_id=57这类的丑陋URL被隐藏,由更受欢迎的像 /read/ ...

  2. symfony2 环境搭建笔记

    本机环境:windows+xampp symfony下载:官网下载 环境配置: 1.下载后将symfony文件夹解压到xampp/htdocs中(最好改一下文件夹名,尽量小写) 2.Symfony2自 ...

  3. Symfony2 学习笔记之内部构件

    Symfony2内部是怎样工作的以及我们如何来扩展它呢?从外部整体上看,symfony2代码是由许多独立的层构成,每一层都是建立在前一层基础之上.其中,自动加载时不受框架直接管理的,它完全是在Univ ...

  4. Symfony2 学习笔记之插件格式

    一个bundle类似于其它框架中的插件,但是比插件表现更好.它跟其它框架最主要的不同是在Symfony2中所有东西都是bundle,包括核心框架功能和你写的所有应用程序代码.Symfony2中,bun ...

  5. Symfony2学习笔记之表单

    对于一个Web开发者来说,处理HTML表单是一个最为普通又具挑战的任务.Symfony2集成了一个Form组件,让处理表单变的容易起来.在这一节里,我们将从基础开始创建一个复杂的表单,学习表单类库中最 ...

  6. Symfony2学习笔记之HTTP Cache

    富web应用程序的本质意味着它们的动态.无论你的应用程序多么有效率,每个请求比起静态文件来说总会存在很多的耗费.对于大多数web程序来说,这没什么. Symfony2非常的轻快,无论你做些严重超载的请 ...

  7. Symfony2学习笔记之数据校验

    校验在web应用程序中是一个常见的任务.数据输入到表单需要被校验.数据在被写入数据库之前或者传入一个webservice时也需要被校验. Symfony2 配备了一个Validator 组件,它让校验 ...

  8. Symfony2 学习笔记之服务容器

    现在的PHP应用程序都是面向对象开发,所以主要是由对象构成.有的对象可以方便的分发邮件信息而有的可能帮你把信息写入到数据库中.在你的应用程序中,你可能创建一个对象用于管理你的产品库存,或者另外一个对象 ...

  9. Symfony2 学习笔记之控制器

    一个controller是你创建的一个PHP函数,它接收HTTP请求(request)并创建和返回一个HTTP回复(Response).回复对象(Response)可以是一个HTML页面,一个XML文 ...

随机推荐

  1. JavaScript 把函数作为参数进行传值

    JavaScript 响应式编程模式有点类似 WebForm 中的事件驱动模式(传相应的处理函数给委托,通过事件来触发来进行相关的处理),在 AngularJs 2.x 框架中,应用了 RxJS AP ...

  2. python--12、索引知识

    MySQL索引及优化 影响性能的因素 需求:一个论坛帖子总量的统计,附加要求:实时更新.从功能上来看非常容易实现,执行一条 SELECT COUNT(*) from 表名 的 Query 就可以得到结 ...

  3. 对比hive和mysql 复杂逻辑流处理

      1.Mysql中可用存储过程和函数来实现复杂逻辑处理,两者的对比如下:存储过程作为可执行文件,编译一次放在数据库中,函数又返回值.可设定使用权限. 存储过程中可使用游标,声明变量.用call调用. ...

  4. Codeforces_750_C_(二分查找)

    C. New Year and Rating time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  5. MFC_1.1 基本知识

    如何创建一个MFC项目 选择 MFC 应用程序进行创建,不要使用非英文名 选择对话框风格进行编写 可以通过自定义的设置修改类名 MFC 的基本知识 MFC 是纯面向对象的编程,是 SDK 经过 C++ ...

  6. Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean

    WebsocketSourceConfiguration { @Bean ServletWebServerFactory servletWebServerFactory(){ return new T ...

  7. linux ssh 利用scp传输文件

    使用方式如下: 1.上传本地文件到服务器 scp /path/filename username@servername:/path/ 例如scp /var/www/test.php root@192. ...

  8. A4. JVM 内存分配及回收策略

    [概述] Java 技术体系中所提倡的自动内存管理最终可以归结为自动化地解决两个问题:给对象分配内存以及回收分配给对象的内存. 对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的 Ed ...

  9. TWaver矢量小试——Android演进路线图

    还有半个多月就到春节了,年底相信很多公司都会进行年度总结以及公司发展状况总结,在这过程中难免会用到RoadMap,在这我们也使用TWaver的矢量部分绘制一个Android系统的发展历程.先看效果:什 ...

  10. 我的ACM技能框架(自用)

    每次接触到新的知识就把它名字记下来,留给以后当纪念 2018.11 已经学会的 滚动数组,前缀和优化 对多维数组在空间复杂度上的降维优化     最长上升子序列 LIS问题,动态规划递推解决 最长不下 ...