----------------------------- 2009-06-30 16:24:08 ------------------------------
美化URL
以这种形式展示 http://copyscreen.loc/hylink_dev.php/media_planning_show/5
在routing.yml:
show_media_planning:
url: /media_planning_show/:media_planning_id
param: { module: mediaplanning, action: showMediaPlanning }
在超链接中:
1. <a href="<?php echo url_for("@show_media_planning?media_planning_id={$media_planning->getId()}") ?>">xx</a>
2. <?php echo link_to(__('Detail', null, 'navigation'),"@show_media_planning?media_planning_id={$media_planning->getId()}")?>
----------------------------- 2009-06-19 11:42:51 ------------------------------
创建数据库schema,symfony支持两种方式:一种是从编写schema.yml开始,然后用build-sql、insert-sql任务来创建表;另一种是反过来,先在MySQL中定义好表和关联,然后用build-schema来创建schema.yml。这两种方式是等效的,看个人的喜好而定。
1.0 版本需要在propel.ini文件中加入这句:
propel.database.url = mysql://root@localhost/copy_screen
1.0
php symfony propel-build-schema
php symfony propel-build-model
1.2
php symfony propel:build-schema
php symfony propel:build-model
----------------------------- 2009-06-19 11:35:12 ------------------------------
Symfony 创建项目时出现错误如下:
A project named "CopyScreen" already exists in this directory.
原因之一是:进入了Symfony的bin目录执行项目创建动作,正确方法是在项目目录下创建。
错误写法:d:/projectA/lib/vendor/symfony/data/bin>php symfony init-project projectA
正确写法:d:/projectA> php lib/vendor/symfony/data/bin/symfony init-project projectA
----------------------------- 2009-06-08 15:46:30 ------------------------------
复制记录,为新纪录,二者主索引不同,修改部分列值:
$mNewObj = new DbMccAccount();
$mObj = $mccAccount['mobj'];
$mObj->setId(null);
$mObj->setSemUserId($uid);
$mObj->copyInto($mNewObj);
$mNewObj->save();
----------------------------- 2009-06-08 12:07:34 ------------------------------
相关联数据表的删除操作
user(id,name,trackingID)
tracking(id,name)
已知userID,
$user = DbUserPeer::retrieveByPK($userID);
DbTrackingPeer::doDelete($user);
DbUserPeer::doDelete($id)
----------------------------- 2009-05-31 10:49:49 ------------------------------
YAML (IPA: /j?m?l/, 尾音类似camel骆驼) 是一个可读性高,用来表达资料序列的程式语言
http://www.yaml.org/
语法:
Structure通过空格来展示。Sequence(连续、一连串)里的项用"-"来代表,Map里的键值对用":"分隔.
john.yaml:
---------------------------
name: John Smith
age: 37
spouse:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 15
- name: Jenny Smith
age 12
数组表示:
---------------------------
$john = array('name' => 'John Smith',
'age' => 37,
'spouse' => array('name' => 'Jane Smith', 'age' => 25),
'children'=> array(0 => array('name' => 'Jimmy Smith', 'age' => 5),
1 => array('name' => 'Jenny Smith', 'age' => 3)
)
);
---------------------------
PHP 解析 Yaml 文件的类:
- syck # syck bindings (YAML 1.0)
http://pecl.php.net/package/syck
- spyc # yaml loader/dumper (YAML 1.?)
http://code.google.com/p/spyc/
---------------------------
Symfony 命令
$ symfony init-module frontend feed 创建模块
---------------------------
$con = Propel::getConnection();
$query = 'select %s.*, %s.name from %s left join %s on %s=%s where %s = ?';
$query = sprintf($query,
DbUserPeer::TABLE_NAME,
DbAuthorityGradePeer::TABLE_NAME,
DbUserPeer::TABLE_NAME,
DbAuthorityGradePeer::TABLE_NAME,
DbUserPeer::AUTHORITY_GRADE_ID,
DbAuthorityGradePeer::ID,
DbUserPeer::ID
);
$stmt = $con->prepareStatement($query);
$stmt->setInt(1,$user_id);
$rs = $stmt->executeQuery();
----------------------------- 2009-04-27 14:22:53 ------------------------------
routing.yml 路由表
注意,系统选择路由,会自上而下的匹配,如果上面有符合条件的规则,就不会再向下匹配了。
所以希望展示自定义规则的话,那就将自定义规则往上提。
--------------------------------------------------------------------------------
$c = new Criteria();
$c->add(QuestionPeer::STRIPPED_TITLE,$this->getRequestParameter('stripped_title'));
$this->questions = QuestionPeer::doSelect($c);
$this->question = $this->questions[0];
$this->forward404Unless($this->questions);
// $this->questions = QuestionPeer::doSelect($c); 返回的是一组对象,是一个对象数组。
在模板中不能直接$questions->getId()等引用,而是读取其中一个元素(就是对象),然后$question->getId()引用。
--------------------------------------------------------------------------------
[propel-om] Processing: schema.xml
Execution of target "om-template" failed for the following reason: D:/workspace/
askeet/lib/vendor/symfony/lib/vendor/propel-generator/build-propel.xml:470:1: No
package found for database "propel" in schema.xml. The propel.packageObjectMode
l property requires the package attribute to be set for each database.
[phingcall] D:/workspace/askeet/lib/vendor/symfony/lib/vendor/propel-generator/b
uild-propel.xml:470:1: No package found for database "propel" in schema.xml. The
propel.packageObjectModel property requires the package attribute to be set for
each database.
i had the same problem and changed
<database name="propel" defaultIdMethod="native" noxsd="true">
to
<database name="propel" defaultIdMethod="native" noxsd="true" package="lib.model">
was a lucky guess.
and i'm getting excited. 2 days and almost made it thru the 2nd tutorial. hehe.
--------------------------------------------------------------------------------
How to Get Action Name?
To get current action name in action file:
sfContext::getInstance()->getActionName();
To get current action name in template file:
$sf_context->getActionName();
------------------------------------------------------------------------------
routing.yml
# homepage defined The default Page When logged successfully.
homepage:
url: /
param: { module: job, action: index }