自刨自吃,闲云野鹤,眼净心净,天宽地宽。
Posts tagged symfony
解决 propel-convert-xml-schema 把 null 默认值处理为字符串的问题
0
通过 propel-convert-xml-schema 把 xml schema 转化成 PHP 代码的时候,如果一个字符型字段不能为空且没有明确输入默认值,例如: 1<column name="username" type="VARCHAR" size="128" required="true" default=""/> 生成的 PHP 代码中该字段的默认值是 'null' 而不是 null,导致页面输入框的默认值不是空值,而是一个字符串的 null,很恼火。因为要么在页面中每个字段都对 'null' 做特殊处理,要么修改生成的 PHP 类文件,但是一旦重新执行 propel-convert-xml-schema 就会重新覆盖。 解决办法:修改 propel-generator/classes/propel/phing/PropelCreoleTransformTask.php 文件(对于 Symfony 来说,就是 symfony/vendor/propel-generator/classes/propel/phing/PropelCreoleTransformTask.php)。应用如下 patch: 1234567507,510c507 < //$node->setAttribute("default", iconv($this->dbEncoding, 'utf-8', $defValue)); < if(!empty($defValue)) { < $node->setAttribute("default", [...]
在 Symfony 中结合使用 Structures/DataGrid、sfSmartView、Propel
0
今天需要在 symfony 中使用 datagrid 型控件对一个分页+排序的表格进行展示。但是 sfDataGrid 写得实在是太糟糕了,没有找到其他的比较好的 plugin。 PEAR 中的 Structures/DataGrid 倒是不错。但是两个问题:无法和现在偶使用的 sfSmartyView 直接结合,因为在 $datagrid->fill($smarty); 的时候,symfony 还没有生成 view instance,除非直接获取生成的 HTML_TABLE 或者类似的结果,这样不利于 MVC 的分离和对具体样式的控制;二是现有的 datasource 无法和 symfony 使用的 propel 直接结合,如果采用检索全部结果再传递给 Structures/DataGrid 进行分页处理,那么效率非常低下。 于是自己写一个 datasource,并且使用了一点技巧解决和 sfSmartyView 结合的问题。 Structures_DataGrid_DataSource_Propel 类的定义: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748class Structures_DataGrid_DataSource_Propel extends Structures_DataGrid_DataSource { protected $criteria = null; protected $con = null; protected $object [...]
symfony 学习笔记 – 2 – 开始运行 symfony
1
安装 symfony 库 用 PEAR 方式安装 12345678910# 在 PEAR 频道列表里添加 symfony 频道 pear channel-discover pear.symfony-project.com # 查看该频道内可用的包 pear remote-list -c symfony # 安装 symfony 包 pear install symfony/symfony # 安装完毕后,查看版本,确认安装成功 symfony -V # 用下面这句来安装最新的 beta 版 install symfony/symfony-beta Symfony 库被安装在以下目录内: $php_dir/symfony/:核心库。 $data_dir/symfony/:symfony 的程序框架,默认的模块和配置信息,全球化数据等。 $doc_dir/symfony/:文档。 $test_dir/symfony/:单元测试。 注:最新版本的 PEAR 安装 symfony 会出现错误,解决方法参见在 Linux 下用 PEAR 安装 Symfony [...]
symfony 学习笔记 – 1 – 基础知识
0
symfont 的 MVC 实现 模型层 数据库抽象层 数据访问 视图层 视图 模板 布局 控制层 前端控制 动作 symfont 的工作流: 代码组织 代码组织实例: 根目录文件树结构 apps/:一个子目录对应一个应用,通常是 frontend 对应前台,backend对应后台。 frontend/ backend/ batch/:需要从命令行运行或者周期性运行的 PHP 批处理脚本。 cache/:配置信息的缓存,以及动作和和模板的缓存(如果你启用了的话)。用这个缓存机制来加速请求的响应速度,每个应用都有一个对应的目录,放置预处理过的 PHP 和 HTML 文件。 config/:每个项目的常规配置信息。 data/:项目里和数据相关的文件,比如数据库模式、SQL 文件,甚至是 SQLite 的数据库文件。 sql/ functional/ doc/:项目文档,包括你自己写的文档,和由 PHPDoc 生成的文档。 lib/:外部的类或者库。你可以在这里添加需要在项目级共享的代码。 model/:目录里是项目整体的对象模型。 log/:由 symfony 直接生成的日志文件。 plugins/:插件目录。 test/:单元测试和功能测试脚本。在创建项目的过程中,symfony 会自动创建一些测试的。 unit/ functional/ web/:Web 服务器的根目录,只有这个目录里面的文件才能被访问到。 css/ [...]
在 Linux 下用 PEAR 安装 Symfony 出现错误的解决方案
0
开发环境: Slackware Linux 12.0 Apache httpd-2.2.6 PHP 5.2.5 PEAR 1.6.2 根据官方文档,用 PEAR 安装 Symfony的命令如下: 12pear channel-discover pear.symfony-project.com pear install symfony/symfony 但是运行 channel-discover 的时候报错:Discovery of channel “pear.symfony-project.com” failed。 原因:PEAR 本身的 bug,不支持 channel 的 url 中包含 – 字符。 解决方法:用命令 pear upgrade -f PEAR-1.4.6 把 PEAR 降级到 1.4.6 版,然后正常安装,再用命令 pear upgrade-all 升级 PEAR。 或者应用 PEAR 的 Bug #6960 [...]
Recent Comments