你可以在此问一些symfony相关的问题,我们会在最短时间内进行答复,工作时间(周一到周五9:00-6:00)是可以即时回复的。
也可以通过gtalk联系bobhero(bobhero.chen[at]gmail.com)和我(makerwang[at]gmail.com), 不过即使我们在线我也还是希望您可以在这里进行提问,因为解决问题的过程也会帮助到其他的开发者。
all about symfony
你可以在此问一些symfony相关的问题,我们会在最短时间内进行答复,工作时间(周一到周五9:00-6:00)是可以即时回复的。
也可以通过gtalk联系bobhero(bobhero.chen[at]gmail.com)和我(makerwang[at]gmail.com), 不过即使我们在线我也还是希望您可以在这里进行提问,因为解决问题的过程也会帮助到其他的开发者。
这篇文章上的评论 RSS feed TrackBack URL
由 WordPress 所驱动
你好!看到了很多你的Symfony的教程。
我最近刚开始用SF,有个问题想向你请教一下:
1. Backend的Admin好像不能提供类似用户注册的功能?
2. 如果我要实现一个类似“用户管理自己的帖子”这样的功能,怎么着手比较好呢?
Comment 由 TR@SOE — 2009-03-10 @ 11:53
您好,感谢您的关注.
1.admin generator 我没有发现可以提供用户注册类似的功能。据说user 类是被扩展最多的类您可以查一下相关的资料,如果想快点实现还是自己写个form比较快。工具不可能安全代替人。
2.用户管理自己贴子的功能 可以直接在应用过滤器的功能 重写一些方法 让用户登录后在session里存住自己的 id 在进行list 和 edit等方法时从用户的session里取是可以做到的,另外一些动作也是可以设置有角色才可以看到,没有角色就不能看到的。也可以做为一些控制手段。个人建议最好不要让用户用admin generator 因为必竟是admin的平台,而非用户,配置起来相当麻烦,还不如重写一个 app方便
Comment 由 bobhero — 2009-03-10 @ 12:09
最近一直在独自研究symfony··,当中也遇到了很多问题,搜索了很多问题,当然有很多都是在你的博客上得到的启发和帮助,
这里我有个问题想请教一下,我的前台已经搭建好了,现在正在着手后台,但是在generator.yml文件中,我不知道怎么继承lib/XXXForm.class.php中的配置和验证,例如在lib/XXXForm.class.php中有一个下拉列表框是用来选择几个常量的值,在XXXForm.class.php中我使用的是$this->widgetSchema['comment'] = new sfWidgetFormSelect(array(
‘label’ =>’好评度’,
‘choices’ => PianoPeer::$comment,));
$this->validatorSchema['comment'] = new sfValidatorChoice(array(
‘choices’ => array_keys(PianoPeer::$comment)));
但是在后台的编辑和新建页面怎么实现像前台一样的下拉列表框呢?或者在generator.yml中是怎么写的?谢谢!!!盼回复!
Comment 由 Assassinann — 2009-03-26 @ 10:09
你可以看一下缓存里的内容先
确保后台用的也是同一个FORM 就可以了
如果不是可以重写 getForm方法 让其返回 正确的formname 这样就用的是一个FORM
symfony 继承 用得很多 一不小心就用错了
多看看代码有点耐心 一切都会变得静恰美好
Comment 由 bobhero — 2009-03-26 @ 10:20
我是symfony新兵,现在手上所做的全部是模仿www.symfony-project.org上面来做的,然后再理解,我昨天下午就在着手这个事情了,所以现在有点小急躁,
在GOOGLE和symfony forum中一直没有找到类似的例子,请问您那有没有类似的example的链接或者什么的?
Comment 由 Assassinann — 2009-03-26 @ 10:50
你好 bobhero!
不好意思又要打扰您了···我现在在处理我的页面的URL外观(Jobeet Day 5: The Routing),在Jobeet Day 5: The Routing中他是处理job的show页面,但是我遇到的问题是在我的主页面我使用了一个component显示了8条工作记录,在job/action中有这样一条语句:$this->job= $this->getRoute()->getObject();但是在处理_job_list组件的components.class.php文件中我是这样写的:
$c = new Criteria();
$c->addAscendingOrderByColumn(JobeetJobPeer::XXX);//按照一定的条件查询
$c->add(JobeetJobPeer::ISACTIVE, 1);//显示已审核通过的工作信息
$c->setLimit(5);
$this->jobs = JobeetJobPeer::doSelect($c);
如果在这里加上$this->job= $this->getRoute()->getObject();语句肯定不行,因为class jobComponents是继承自sfComponents类,而sfComponents里面本身或者他的父类没有getRoute()方法,所以这里向请教您一下,在组件(component)中怎么实现像job/show中一样改变URL的外观?在线盼回复,谢谢!
Comment 由 Assassinann — 2009-04-01 @ 11:59
我和bobhero一致表示,没看明白你在说什么。
$this->job= $this->getRoute()->getObject();这句是通过陆由规则取得相关的数据对象, 而对于url的优化工作则是由symfony通过routing.yml自动进行的。
Comment 由 maker — 2009-04-01 @ 12:08
我不是很明白你想说什么 大约猜一下你是想使用路由里的URL
在组件里可以直接使用 URLHELPER的 而且不一定非要用 GETOBJECT。你 的 $this->jobs 都传进去了还有什么做不到的吗?
Comment 由 bobhero — 2009-04-01 @ 12:11
在job模块中我是按照Jobeet Day 5: The Routing中做的,但是在主页上有一个组件(_joblist)显示了8条工作记录,组件里面显示了job的内容并添加了链接,点击链接后地址栏里面显示的是http://job/frontend_dev.php/job/show/id/1,并不是在我的Routing.yml文件里面配置的/job/:company_slug/:id/:position_slug的样子,那么请问在component的控制层怎么通过路由规则获取对象数据呢?
Comment 由 Assassinann — 2009-04-01 @ 13:02
正常情况下你直接写 用 url_for 函数生成的就应该是正确的URL ,如果不是你可以写成url_for(@xxxxx )这样的格式,你可以看一下 url_for 的帮助 其中xxxx 代表你的路由规则的名字
Comment 由 bobhero — 2009-04-01 @ 13:04
恩···好的···看看url_for帮助文档先···谢谢了···
Comment 由 Assassinann — 2009-04-01 @ 13:12
谢谢你们了···已经解决了···
是我自己对symfony内部工作原理理解得不够透彻,“通过陆由规则取得相关的数据对象”这句话给我很大启发啊··呵呵··
再次谢谢maker和bobhero““谢谢···
Comment 由 Assassinann — 2009-04-01 @ 13:22
不好意思又有问题了····呵呵··这里如果需要建一个名为region的表,其存储的是地区信息,其中包含id,name,parent_id三个字段,请问这种自身关联自身主键的关系在schema文件中怎么写啊·?
还有在为一个对象添加地区属性时该对象对应地区的外键应该怎么设置呢?例如要为一个商店的对象添加一个地区的属性,
那么shop表中应该有一个region_id的字段,那么它关联的应该是region的主键id吗?
最后在ShopForm.class.php中怎么做呢?例如这里要添加一个位于“湖北省武汉市洪山区珞瑜路”的商店
那么这里在提交shop表单时region_id这一栏怎么填四个地址(湖北、武汉、洪山、珞瑜路)呢?
这里有没有相关文档或者帖子之类的?
谢谢···盼回复···
Comment 由 Assassinann — 2009-04-03 @ 10:52
你可以参考下面这篇文章《symfony数据表关联详解》,jobeet和askeet上应该也有相关内容,或者你可以直接查阅propel的相关文档。
http://www.foolbirds.com/symfony-references-with-propel.html
Comment 由 maker — 2009-04-03 @ 10:55
谢谢你的回复,我都看过了··
这里没有相关的例子啊···在show页面显示shop的地址可以做到,但是在Form类里面定义提交表单一点头绪都没有啊·
有没有其他的建议啊·?
Comment 由 Assassinann — 2009-04-03 @ 12:46
关联就是关联,无论自关联还是外关联用法都是一样的,关于你说的Form的处理我不知道怎么理解,不知道你有没有看过generate-admin的源代码, 在symfony中关联也都是可以自动处理的。
Comment 由 maker — 2009-04-03 @ 13:08
例如这里要添加一个位于“湖北省武汉市洪山区珞瑜路”的商店,那么已注册用户在网站起前台要提交一个shop信息,shop提交表单里面应该包含region_id(地址),那么在ShopForm.class.php文件中怎么定义shop的Form对象才能让它的region_id这一栏填四个地址(湖北、武汉、洪山、珞瑜路)呢?
Comment 由 Assassinann — 2009-04-03 @ 13:15
如果你正确的设计的数据库关联并且生成了form, 那么你可以去查看一下/lib/form/base/BaseXXXForm.class.php, 你会看到一些使用了sfWidgetFormPropel****的widget, 这些都是用来生成关联项的, 我想说这些你应该可以理解了。
Comment 由 maker — 2009-04-03 @ 13:24
恩···我看看先··再次谢谢您的回复··
Comment 由 Assassinann — 2009-04-03 @ 13:26
bobhero和maker你们好···
刚刚模仿Jobeet的Search做了一个搜索栏,但是在搜索中文的时候好像有点问题··
我使用的数据库是MySQL,建立数据库时使用的编码是utf8_bin,在建立索引文件文件时在索引文件中存储的应该也是utf8的
(语句:$doc->addField(Zend_Search_Lucene_Field::UnStored(’name’, $this->getName(), ‘utf-8′))),
但是在搜索的时候总是检索不到记录信息,请问你们在开发过程中碰到过类似的问题没有?能否给点建议呢·?
在网上搜索了一下Lucene中文搜索的问题,但是没有找到在symfony环境中的中文搜索的相关文章···
Comment 由 Assassinann — 2009-04-09 @ 11:24
你是想做全文搜索吧? 我只是听说过没实际操作过, 可能帮不上你什么。
Comment 由 maker — 2009-04-09 @ 11:33
哦··在Jobeet中他的方法好像是在新建或者更新一个记录或者对象时,将对象一部分字段(信息)存储在引索文件(index)中,
然后在搜索的时候在引索文件中查询相关的记录获取对象,这是我的理解哈,也不知道对不对,
我想我这里的问题就好似字符编码的问题才造成了字符没有匹配,所以查询不到相关记录···
谢谢你的回复哈···
Comment 由 Assassinann — 2009-04-09 @ 11:42
作者你好:
最近在学习使用sf框架,遇到一个问题不知道您能解答不:
我有一个有点特殊的需求,需要用到分表。比如说我的用户表my_user_data, 里面记录了id, name, portrait等用户信息。因为性能上的考虑,我需要将此表分成100个,表名形式为my_user_data_00 ~ my_user_data_99。表名的最后两个数字,是id的末两位,举个例子id为1, 101, 201, 3101等id末两位为01的user,他的数据就记录在my_user_data_01这个表里。
我在schema.yml文件里用php + yaml的方式,定义了这100个表,但估计你也想到了,lib/model目录里面也同时生成了100个表的model文件,而在正常设计中,其实只用生成一个model就行了,请问对于这个问题,有什么好的解决办法??
Comment 由 chrisyue — 2009-05-24 @ 15:50
补充一下啊,我用doctrine
Comment 由 chrisyue — 2009-05-24 @ 16:21
感谢您的关注
关于您的这个问题我的思路是 只用一个 MODEL就够了
重写一些个方法就没有问题,最基本的 CRUD 都修改就差不多了
就是说在查的时候根据ID ,动太的更新 MODEL (PEER)的表名的属性 这样就够了,理论上是可以实现的,但是插入的时候可能会麻烦一些 ,自增要注意。
以上理论不是基于DOC 的 ,因为没用过
希望能帮到你
Comment 由 bobhero — 2009-05-25 @ 09:14
谢谢bobhero的回复,
sf的orm,无论是propel还是doctrine,似乎都只能是一个表一个model,如果我在schema.yml里只定义一个表来生成一个model,那是不是每次build-all的时候都得自己去手工分表啊?这样似乎就享受不了build-all(-reload)命令带来的方便了,总之这个问题,我总觉得没什么好的解决方法……
Comment 由 chrisyue — 2009-05-25 @ 10:33
你说的的确没错,你看看可不可以这样,build-all你正常使用,同样是100个表生成100个model,然后你构造一个中间层,这个中间层负责选择和调用相应的model执行相应的操作。
Comment 由 maker — 2009-05-25 @ 10:41
另外哪里有schema.yml详解啊?英文的也行,那个actAs段,不知道除了Timestampable,还有没有其他的选项
Comment 由 chrisyue — 2009-05-25 @ 10:42
你可以看下本站的相关链接,里面有propel和doc的官网,我想应该会有你想要的东西。
Comment 由 maker — 2009-05-25 @ 10:44
嗯,这个方法我想过,但我总觉得不是太好,这里只是100个,那要是1000个呢?或者不止一个表分表呢?我是道听途说一个文件夹里的文件不宜太多,会影响速度。另外我还考虑到会不会出现必须在生成的model文件加代码的情况,似乎是不会不过也说不准……想到这些我也就不敢这么用了@_@
我现在是考虑尝试一下用mysql 自带的patitioning table功能,以前因为觉得是新功能,不敢用怕出问题,现在看来是不得不用了。
谢谢两位博主啊,你们的联系方式能发到我邮箱里吗?qq, msn, twitter都行,以后多联系,国内用sf的似乎不多,找一个同志很难啊
Comment 由 chrisyue — 2009-05-25 @ 10:51
我还是觉得如果你的中间层构造的足够好的话,是完全可以实现的,如果想要再model中加代码可以直接加到中间层,如果构造的足够好,完全可以当做一个model来用,而且我觉得并不是很难实现。
关于你说的文件数的问题,我想应该不会有太大影响。
联系方式博客里应该可以找到,文章的作者都是有邮件链接的,不过bobhero的文章貌似比较难找。
Comment 由 maker — 2009-05-25 @ 11:07
好像没有问题
SQL 部分你自己写代码生成表就可以了
MODEL还是一个就够用了,重写一些方法 我觉得不会有问题
就是想 让一些符合规则 的数据 特殊处理 ,针对这个原则,重启你能想到的数据库 操作就OK ,其它基本不用变。
比如 新建 ,就可以直接重写SAVE方法,如果你的区分的那个字段不是主键就更好办了 ,SAVE的时候 改一下 TABLENAME就OK ,取的时候相对麻烦一些也是有办法解决的
但是说实话 个人感觉 这种优化 来提高效率还真是提高不了太多
你也可以这样,先按一个表开发 ,直到出现效率问题的时候再优化 ,那个时候不用改太多,相当于加了一个中间层来代理就可以了,这样会提高你的开发效率,项目开始的时候不方便解决这样的问题。
就像 还没有结婚就愁 如何给儿子取老婆,万一是个女儿呢?
Comment 由 bobhero — 2009-05-25 @ 13:22
chrisyue同志很风趣,也不留邮箱还叫俺们发你邮箱里:)
Comment 由 maker — 2009-05-25 @ 15:12
呵呵,因为电子邮件是是发表评论的必填项嘛,我以为你们是能看到的呢,谢谢两位的耐心解答哦
Comment 由 chrisyue — 2009-05-25 @ 16:47
:)的确是能看到, 有问题来这里就可以联系到我们, 工作时间基本上都是即时回复的。
Comment 由 maker — 2009-05-25 @ 17:11
我又来麻烦你们了:)
在给路由定义的时候,按jobeet的例子来说,怎么才能定义出:job/:company-:location-:position/:id的url?我按照jobeet的例子,把一些“/”改成“-”就报错
Comment 由 chrisyue — 2009-05-27 @ 16:48
我忽然觉得…… 是不是做不到这一点啊?
我是这么想的:如果可以这么定规则,但:company里本来就有-的话,那这条路由规则无论如何也无法正确匹配到:id了,看来这种设计还是有点缺陷的啊
Comment 由 chrisyue — 2009-05-27 @ 17:20
经bobhero指点,只有symfony所定义的分隔符才能被放在参数之间,而“-”不是symfony定义的的分隔符,所以“-”会被认为是数据而不会被正常解析,听说在源码里可以找到那些所谓的分割符:)
Comment 由 maker — 2009-05-27 @ 17:24
呃,我还是老老实实用”/”吧,听说”/”太多层对搜索引擎也不好。
不能直接使用”-”分割,多少还是有点遗憾呐
Comment 由 chrisyue — 2009-05-27 @ 17:43
还有个问题, 如何在build-all的时候生成默认charset为utf-8 unicode的表啊?我按照一些网上说的方法在schema.yml里加上encoding: utf8 也没有效果
Comment 由 chrisyue — 2009-05-27 @ 18:13
说错了,是database.yml里
Comment 由 chrisyue — 2009-05-27 @ 18:15
貌似没见过相关的文档,这里有个帖子应该能帮助你,大概的意思是改mysql设置或者在sql中动态的修改mysql变量。
http://forum.symfony-project.org/index.php/m/56881/
Comment 由 maker — 2009-05-30 @ 13:23
我也搜过论坛了,貌似只能在schema.yml的每个表里加
options:
collate: utf8_unicode_ci
charset: utf8
很麻烦
Comment 由 chrisyue — 2009-05-31 @ 11:39
有解决方案总比没有好:)
Comment 由 maker — 2009-05-31 @ 12:03
JOBEET第三天,不能如愿正确显示页面,但能显示数年据列表的内容。不知什么原因,能给点提示吗。谢谢!
Comment 由 Jackson — 2009-07-07 @ 10:52
抱歉最近没有维护blog,相信您已经解决了这个问题,下次提问记得详细说明问题细节,操作流程,错误提示等等。
Comment 由 maker — 2009-07-20 @ 09:45
楼主,我现在遇到了一个问题,我的验证码类是一个单独的类,没有继承Symfony的基类的,我在验证码类中用$_SESSION['code'] = $imgcode;注册了一个session,然后我在登录的处理页面调用这个session,取不到值,我尝试直接用$_SESSION['code']取值,结果为空,然后我又尝试用$this->getUser()->getAttribute(’code’);来取值,也是空值,请问这个应该怎么处理呢?
Comment 由 关于调用外部类的session的问题
Comment 由 关于调用外部类的session的问题 — 2010-08-13 @ 10:29
Promo Cialis With Prescription [url=http://www.archive.org/details/FernandoCortsPizano ]Order Cheap Ultram No Prescription[/url] Viagra Less Medical_authorities Using Propecia And Provillus Together Bollywood Herbal Viagra Levitra Buy First Time [url=http://clomidwithoutprescription.webnode.com/ ]34 Prescription Decimal Nolvadex Clomid Hcg[/url] Levitra Soft Soma Versus Tramadol Tadalafil Powder Prozac Coverage [url=http://xanaxnoprescription.webnode.com/ ]How Do You Parachute No Prescription Xanax[/url] Lasix Drug Interaction Horn National Viagra Coreg Thrombocytosis Buy Zanaflex No Prescription Baclofen Propecia Msd [url=http://www.archive.org/details/FredMaus ]Singulair no prescription[/url] Cheap Tadalafil Rx Online Furosemide Daily Dose Pulmonary Edema Methotrexate And The Immune System Treatment Of Rheumatoid Arthritis Tramadol Cause Headache [url=http://www.archive.org/details/BuyPremarinNoPrescription_465 ]purchase premarin no prescription[/url] Viagra Generica Online Dysfunction T7 Ultram Buy Internet Prescription Viagra Cheap Prices Risultati Finasteride [url=http://www.netvibes.com/atenolol50 ]generic atenolol 50 mg[/url] Cialis Prescription Drug Store Locations Yasmin Guaranteed Shipping Blog Propecia Uk Methotrexate Liver Fibrosis J Am Acad Dermatol How To Make Effexor And Adderall Edinburgh Viagra Mmr Find Search Ordering Generic Viagra Anonymous
Comment 由 Vedeelvebop — 2011-11-17 @ 06:55
cheap best ultram [url=http://buy-ultram.narod.ru]buy ultram[/url]
Comment 由 bgrzswe — 2011-11-17 @ 19:09
[url=http://gamblux.org]blackjack[/url] [url=http://www.realcazinoz.com/mansion-casino.htm]mansion casino[/url] [url=http://www.realcazinoz.com/de/jackpotcity-casino-gratis.htm]jackpot city casino[/url] [url=http://www.planet23.com/titan-bonus-code]titan[/url] [url=http://www.texasholdem-online-poker.com/]poker[/url]
Comment 由 kawslault — 2011-11-18 @ 01:10
People who work out frequently may take some supplements to help them get better benefits from their workouts. Sometimes these people take supplements are safe and in other cases they are not safe at all. There are even cases where there is addition people think is safe, that is actually very dangerous. One example of such a product is whey protein. Whey protein is a product that people make, mostly men, because women tend to consume soy protein powders, in order to meet their protein needs every day. In this article we will discuss three Whey Protein Dangers remember to shake before using another whey protein.
More at [url=http://wheyproteindangerss.com/]Whey Protein Dangers[/url]
Comment 由 georiencilync — 2011-11-18 @ 08:54
[url=http://easyclicktravel.com][img]http://www.flights.com/pics/newmap2.gif[/img][/url]
Good Evening! [url=http://www.easyclicktravel.com.com][img]http://www.certifiedby.com/images/smile.gif[/img][/url]
[url=http://easyclicktravel.com][b]EasyClickTravel[/b][/url] is a internet service travel website with localised sites for most foreign international locations. It books airline tickets, hotel reservations, car rentals, luxury cruises, vacation holidays and other interesting attractions and services using the internet in addition to traditional straightforward voice travel specialists. For [url=http://easyclicktravel.com][b]economical travel packages[/b][/url] working with top-notch experience, I really suggest highly [b]EasyClickTravel[/b].
EasyClickTravel searches countless web sources relating to the cheapest costs existing. The more flexible you are on time and vacation destination, the higher your chances of obtaining a wonderful deal. Search for dates about 3 days before your ideal traveling dates, or utilize the technique to look for flights that depart from in a thirty day period, inside the six impending weekends or maybe at any time. If you could be adjustable on vacation spot, the website helps you to dig through a section, for instance the Carribbean, The european countries or Asia. Along with the site’s Investigate the method, you’ll be able to read a world road map for the vacation spots you may reach out to in a given budget range. [url=http://easyclicktravel.com][b]economical travel packages[/b][/url] employing top-notch insight, I personally encourage [b]EasyClickTravel.com[/b].
[url=http://www.easyclicktravel.com][img]http://www.easyjet.com/common/img/EN-flight-disruption-alert.gif[/img][/url]
Comment 由 Imilitheree — 2011-11-19 @ 23:12
[url=http://2yd.net/y9]diet solution program[/url]
[url=http://2yd.net/vY]the truth about abs[/url]
[url=http://2yd.net/UJ]panic away[/url]
[url=http://2yd.net/UI]acne no more[/url]
[url=http://2yd.net/mQ]best penis enlargement[/url]
Comment 由 ahiyagalpoe — 2011-11-20 @ 04:44
This website is devoted to providing information on reliable online pharmacy shops which offer a wide range of the medications. How long drug -education [url=http://using-cilias.erectilerxpills.net/generic-cilias-prices.html]generic cilias prices mesa[/url] national..-sleep and impotence american heritage medical insurance?
Comment 由 HarroliAgring — 2011-11-20 @ 11:39