路由可以在全局定义,也可以在单个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. mysql之replace into与 insert into duplicat key for update

    mysql实际应用中,我们在插入数据的时候,经常遇到主键冲突的情况,这是因为库中已经存在相同主键的数据,这时,我们只能更新数据:在判断是更新数据还是插入数据,我们还需要在此之前做一些必要的判断:在my ...

  2. 第3章 DOM

    1.节点,dom有3种节点,元素节点,文本节点,属性节点 2.元素节点是dom的原子,所有的属性节点和文本节点都被元素包含,但并不是所有的元素都包含他们 3.继承,节点树上的元素将继承父元素的样式和属 ...

  3. Sublime——基本操作

    基本安装 程序下载地址:https://www.sublimetext.com/ package control安装 View -> Show Console打开控制台或者用快捷键ctrl+~打 ...

  4. sort 排序 自定义排序算法的使用

    // struct sort_by_pt// {// bool operator()(const std::pair<CString, AcGePoint3d> a, const std: ...

  5. ARX亮显问题

    转载一段acedSSSetFirst的用法仅供参考:打个比方,我创建了一个命令,这个命令的功能是提示用户选择,然后只过滤文本对象作为选择集,随后在屏幕上使得这个选择集的所有成员都亮显,并且能够显示出各 ...

  6. java面试题链接

    http://blog.csdn.net/jackfrued/article/details/17339393

  7. React和Jquery比较

    Jquery的工作方式: 假如你需要给一个按扭添加一个点击事件. 首先根据CSS规则找到对应的dom元素,挂上一个匿名事件处理函数,在事件处理函数中,选中那个需要被修改的DOM元素,读取他的文本值,加 ...

  8. [USACO] 奶牛混合起来 Mixed Up Cows

    题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a unique serial number S_i (1 <= S_i & ...

  9. UVA - 12661 Funny Car Racing (Dijkstra算法)

    题目: 思路: 把时间当做距离利用Dijkstra算法来做这个题. 前提:该结点e.c<=e.a,k = d[v]%(e.a+e.b); 当车在这个点的1处时,如果在第一个a这段时间内能够通过且 ...

  10. Shell脚本中非交互式修改密码的方法(转)

    这篇文章主要介绍了Shell脚本中非交互式修改密码的两种方法,本文讲解了使用chpasswd和使用passwd和--stdin组合两种方法,需要的朋友可以参考下. 对系统定期修改密码是一个很重要的安全 ...