文章标签 ‘symfony’
假如有一个顾客表buyers和一个员工表employees,可能出现顾客表中有两个字段关联员工表,比如:给顾客拍照的摄影师、化妆师,那么在使用doSelectJoinAll生成的sql语句则left join employees表2次,导致错误,第二次关联应该使用别名,而symfony自动生成的代码没有做处理。 不知道是不是能在数据表定义文件中进行设定,从而生成正确的代码。
最近在symfony框架下使用swfuploader上传文件,由于firefox的bug,flash不能正确的传递cookie,这样处理文件上传的action就不能正确的使用user数据,而在代码中通过session_id()和session_start()处理的session,由于user对象已经在这之前创建,所以通过user还是不能获取session信息,而且user还会将处理好的session清除,从而造成session的完全丢失,经过google,耗费偶近5个小时终于搞定: 通过继承 sfSessionStorage 生成新的 MySessionStorage class MySessionStorage extends sfSessionStorage { public function initialize($options) { //Shitty work-around for swfuploader if( isset($_POST["symfony"]) ) { session_id( $_POST["symfony"] ); } else if( isset($_GET["symfony"]) ) { session_id( $_GET["symfony"] ); } parent::initialize($options); } } 并修改app的 factories.yml storage: class: MySessionStorage param: session_name: symfony 则可以通过 ?symfony=session_id 来找到session。 耗费如此多的时间,主要是因为偶的e文不好,而且开始想通过flash传递cookie实现,或者 提供php自动识别的 PHPSESSID 等来实现,均没有找到实现的方法,只好使用上面的方法了,主要不愿意重构symfony是因为偶对symfony还不够熟悉,如果那位朋友也在学习symfony可以一起学习。
本来以为可以很快搞定bate版本的,延期了至少10天,主要是多symfony不太熟悉。 重新整理js代码搞了2天。 登录、注册、权限管理模块的div化,搞了2天,总算差不多了。 今天发现使用flash上传文件,不能正确的获取session,因为flash不能正确的传递cookie,自己手工强制传递session_id后,虽然可以获得session了,但是不能通过sfuser获取数据,而且还会清空sessin数据,应该是sfuser操作的,哎,真是不好搞了,看来还得标准格式传递的session_id,不知道能不能解决,发现symfony是有点复杂,自己前期也没有系统的了解其中的框架。
SYMFONY 助手 (Helpers) 链接助手系列(Link helpers) 默认已引入 url_for() 重构URL url_for( ‘URL_raw’ ) link_to() 文字链接 link_to(‘link_title’, ‘URL_raw’ [, $options] ) 图像链接 link_to(image_tag(‘img’), ‘URL_raw’ [, $options] ) button_to() 按钮链接 button_to(‘link_title’, ‘URL_raw’ [, $options] ) mail_to() 邮件链接 mail_to(‘email_address’, ‘address title’ [, $options]) 文本助手(Text helpers) 引入声明:use_helper(‘Text’) truncate_text() 裁切文本 truncate_text ($text, $length , $truncate_string = ‘…’) excerpt_text() 选摘文本 excerpt_text ($text, $sentence, [...]
总结:1.有版本的问题,所以中文文档的askeet的教程已经不能用了,使用symfony1.1不能很好的执行。2.symfony的新教程 http://www.symfony-project.org/tutorial/1_1/my-first-project 貌似其提供的schema.yml的内容也不能用,反正我是不能使用,后来通过数据库反过来生成的schema.yml则可以生成model了,而且生成的内容也跟他们提供的不是很相同。问题:1.貌似没有default module,需要手工来生成?2.生成一个module之后,如果不需要了,直接删除此目录就ok?有没有命令来执行相关操作。3.现在的模板咋写?全手工,不能预览了,因为不能直接包含css样式表的原始路径。有啥好方法没? 哎,联通的网好慢,今天就搞了这么一点东西,还折腾了一天,实在郁闷,没钱了,压力大了,要赶快做活了。
