Symfony 框架基础知识点集锦二

----------------------------- 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 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值