路由可以在全局定义,也可以在单个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. PHP定义字符串时单引号和双引号的区别

    一般用单引号或双引号标识一个字符串.单引号串与双引号串,在PHP中的处理是不同的.双引号中的内容可以被解释并被替换,单引号串中的内容则被作为普通字符处理. 例如: $str=6; echo " ...

  2. 类函数:string、math

    类:系统内置的处理字符串类型的函数方法类. string是String的快捷方式.所包含的内容都是一样的. Int i=x.length;//获取一个字符串长度 字符串中,索引号从0开始 String ...

  3. Objective-C设计模式——单例Singleton(对象创建)

    单例 和其它语言的单例产不多,可以说是最简单的一种设计模式了.但是有几个点需要注意下,单例就是一个类只有一个实例. 所以我们要想办法阻止该类产生别的实例,一般语言中都会将构造函数写为private.但 ...

  4. Laravel5.1学习笔记22 Eloquent 调整修改

    Eloquent: Mutators Introduction Accessors & Mutators Date Mutators Attribute Casting Introductio ...

  5. mongo 3.4分片集群系列之五:详解平衡器

    这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...

  6. 【译】x86程序员手册22-6.4页级保护

    6.4 Page-Level Protection 页级保护 Two kinds of protection are related to pages: 与页相关的保护有两类: Restriction ...

  7. sort 及lambda表达式定制排序

    void CDrawCircle::OnBnClickedBtnSelectinfo() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); BeginEditor ...

  8. ThinkPHP---TP拓展之获取IP信息

    [概论] (1)简述 在所有网站里,特别是用户管理系统,都喜欢记录用户访问的IP地址.对后期的业务开展有很大的意义,可以通过IP地址的记录访问出国内或全球范围内,哪一块用户比较多. 在后期做产品时,可 ...

  9. 新安装数据库sqlserver2008r2,使用javaweb连接不上问题处理

    鼠标右键[计算机]-->[管理],打开界面如下: 选择自己数据库的实例名: 选择TCP/IP:右键[属性],将所有TCP动态端口的[0]删掉,TCP端口设为1433:重启服务,即可连接. PS: ...

  10. docker时区

    docker cp /etc/localtime <id/name>:/etc/localtime