- Apache2.2的httpd.conf文件中添加如下的虚拟主机设定:
<VirtualHost *:80>
ServerName myapp.example.com
DocumentRoot "/home/steve/myproject/web"
DirectoryIndex index.php
Alias /sf /$sf_symfony_data_dir/web/sf
<Directory "/$sf_symfony_data_dir/web/sf">
AllowOverride All
Allow from All
</Directory>
<Directory "/home/steve/myproject/web">
AllowOverride All
Allow from All
</Directory>
</VirtualHost> - 在Eclipse中新建PHP项目。
- CMD窗口中进入新建项目的根目录。
- > symfony init-project myproject 初始化项目
- > symfony init-app myapp 初始化应用
- > symfony init-module myapp mymodule 初始化模块框架
- > symfony propel:build-sql 根据schema.yml和数据库配置自动生成数据库建表语句
- > symfony propel:insert-sql 根据schema.yml和数据库配置自动在DB中创建表
- > symfony propel:build-model 根据schema.yml自动生成数据模型
注意事项:
- 由于symfony有自动载入类的功能,每次在项目中添加类的时候需要用symfony clear-cache命令清空symfony缓存。
- symfony是大小写敏感的。
- 使用symfony模板的辅助函数有助于HTML页面代码的简洁并提高效率。
- 使用Javascript辅助函数 <?php use_helper('Javascript') ?\>
- 查询时使用Join来减少查询语句的数量。
- symfony核心和生成的php文件都不包含?>的关闭标签,因为关闭标签不是必须的,而且如果在关闭标签之后包含了空格会造成问题。
- 任何传递给Criteria 的值都会在整合入SQL 代码之前被转义,这能防止SQL 注入的风险。
- 在PHP5 下,对象是引用传递的, 所以要避免修改原始的,你必须克隆它:
$criteria = clone $criteria;
常用代码:
- 用【self::】来调用当前类的静态方法。
- return sfView::ERROR;
return 'MyResult';
return sfView::NONE;
return sfView::HEADER_ONLY;
使用特殊模板时:$this->setTemplate('myCustomTemplate'); - $this->forward('otherModule', 'index');
$this->redirect('otherModule/index');
$this->redirect('http://www.google.com/');
$this->forward404();
$this->xxxIf(判断, xxx);
$this->xxxUnless(判断, xxx);
forward和redirect之后的代码不会被执行。 - public function preExecute() {} 在动作之前执行
public function postExecute() {} 在动作之后执行 - $this->setFlash('attrib', $value);
$value = $this->getFlash('attrib');
在显示出下一页之后Flash属性就被删除了。
模板:
- 模板内置变量:
$sf_user
$sf_flash->has('attrib')
$sf_flash->get('attrib') - sfLoader::loadHelper($helpers) 在模板之外载入辅助函数
过滤器:
- isFirstCall() - 让第一个动作通过过滤器
- return $this->getController()->forward('mymodule', 'myAction'); 转发
0 コメント:
发表评论