symfony框架的一些简单问题

关于symfony,需要知道的一些知识:

自己遇到的问题:
===========================================================================================================

1.首先,front_dev下的config文件里面的每一个配置文件是做什么的?
----------------------------------------------------------------
#项目的配置
myproject/config/

config.php:---------------------------初始化的全局配置文件,是框架执行的文件路径

databases.yml:--------------------链接数据库的信息文件

properties.ini:--------------------------包换命令行所需的参数的文件,以及项目名和远程设置信息

rsync_exclude.txt:---------------------------同步文件

schema.yml and propel.ini:--------------------数据库连接文件,以propel的方式来运行sumfony的class以及项目所需的数据。


----------------------------------------------------------------
#front_dev下的config文件的配置:

myproject/apps/myapp/config/:

app.yml:--------------------------应用程序的详细设置文件,不许要存进数据库的,税率、email地址等信息。

config.php:-------------------------应用程序的初始化配置文件

factories.yml:-----------------------自定义的class的详细配置文件

filters.yml:----------------------- 执行每个请求时的过滤器,可以过滤每个modlue.

logging.yml:-------------------------可以定义所需计入日志的信息内容,可用来debug程序

routing.yml:------------------------路由文件

settings.yml:--------------------------sumfony主要的应用程序的设置,例如打开缓存之类的

view.yml: -----------------------默认的视图结构的配置文件,还可以定义meta和标题等。


---------------------------------------------------------------

=================================================================================================================

2.根据每一个表生成的module和app里的每一个module有什么区别?
分别都是起什么作用的?这两个module之间是通过什么方式来彼此调用的?

#根据每一张表生成的class是基础类,在symfony中叫对象类,主要是做数据库中单个记录的操作。
主要提供每条记录以及相关记录的操作。

#另外生成的带有Peer的类是Peer类,其中包含管理数据表的所有静态方法。Peer类可以从操作表中返回一个对象,或者相关表的对象类。所以Peer中会调用到对象类的方法。

====================================================================================================================

3.关于模板的应用:总的模板和每一个app里面的module的模板是什么关系?
ajax生成的模板的过程是怎么样的?

#总的模板包含每一个app的module里面的模板。但不一定所有的app的module里面的模板都要包括在总模板当中,很多时候app的module里面的模板可以在自己的module里面被调用,直接作界面的模板。

#view部分需要注意的四个概念:Partials,Components,Slots,Components Slots。

Partials-----------------------------是模板代码可重复利用的一块。
Components-------------------组件是指从表现层分离出来逻辑层的一种组合,像一个action,
                         也用execute来执行,并传递参数到模板或者Partials。
Slots---------------------------需要根据action的结果来设置的动态的模块
Components Slots--------------------------根据components的结果来设置动态的模块

#ajax生成的步骤:
------Ajax Link with the link_to_remote() Helper
<div id="feedback"></div>
<?php echo link_to_remote('Delete this post', array(
    'update' => 'feedback',--------------------所需要替换的div的名字
    'url'    => 'post/delete?id='.$post->getId(),--------------------其中所要执行的方法
)) ?>

-----Ajax Form with the form_remote_tag() Helper
<div id="item_list"></div>
<?php echo form_remote_tag(array(
    'update'   => 'item_list',--------------------所需要替换的div的名字
    'url'      => 'item/add',--------------------其中所要执行的方法
)) ?>
  <label for="item">Item:</label>
  <?php echo input_tag('item') ?>
  <?php echo submit_tag('Add') ?>
</form>


====================================================================================================================
4.关于数据库调用的方法:需要用到相关的哪些helper,另外就是单独写的
话,怎么写?还有就是写在哪里合适?

#首先,要对表的对象类初始化,然后根据set或者get来存取该对象的所有的属性。
其次,根据set其他相关对象类和get其他相关对象类来获得相关对象的所有属性。
再次,可以根据Peer类的doSelect函数来实现根据主键进行的搜索,可以得到一个对象信息。
最后,根据sql来查询数据库的方法如下:
$connection = Propel::getConnection();
$query = 'SELECT MAX(%s) AS max FROM %s';
$query = sprintf($query, ArticlePeer::CREATED_AT, ArticlePeer::TABLE_NAME);
$statement = $connnection->prepareStatement($query);
$resultset = $statement->executeQuery();

====================================================================================================================
5.基本的文件目录的介绍:
apps/-------------------------项目的每一个应用程序的总目录
  frontend/----------------------项目的前台
  backend/----------------------项目的后台
batch/--------------------------包含一些需要用命令行来执行的php的脚本
cache/------------------------------缓存目录
config/----------------------------------项目的总的配置文件夹目录
data/----------------------------------数据库的文件目录
  sql/------------------------------------数据库脚本
doc/-------------------------------------------文档目录
lib/----------------------------------每个应用模块都可用的目录,其中有根据数据表生成的modules.
  model/----------------------------------------根据数据表生成的modules.
log/--------------------------------------日志
plugins/-----------------------------------------插件
test/--------------------------------------测试
  unit/
  functional/
web/----------------------------------------站点所需的相关修饰文件
  css/
  images/
  js/
  uploads/

====================================================================================================================

6.怎么样在页面中调用js和css文件?还有包含其他的文件时,目录是怎么写的?

#调用js和css文件
Listing 7-24 - File Inclusion in view.yml--------------------在view.yml里面配置

indexSuccess:
  stylesheets: [mystyle1, mystyle2]
  javascripts: [myscript]


Listing 7-25 - File Inclusion in the Action--------------------在action里面调用

$this->getResponse()->addStylesheet('mystyle1');
$this->getResponse()->addStylesheet('mystyle2');
$this->getResponse()->addJavascript('myscript');

Listing 7-26 - File Inclusion Result--No Need for a Helper Call in the Layout-------------最后在页面上的效果

<head>
...
<link rel="stylesheet" type="text/css" media="screen" href="/css/mystyle1.css" />
<link rel="stylesheet" type="text/css" media="screen" href="/css/mystyle2.css" />
<script language="javascript" type="text/javascript" src="/js/myscript.js">
</script>
</head>

#调用单个的js函数

-----Inserting JavaScript with the javascript_tag() Helper--------方法一:用javascript_tag()

<?php echo javascript_tag("
  function foobar()
  {
  ...
  }
") ?>
 => <script type="text/javascript">
    //<![CDATA[
      function foobar()
      {
        ...
      }
    //]]>
    </script>

-----<?php echo link_to_function('Click me!', "alert('foobar')") ?>----------方法二:在link_to_function用js
 => <a href="#" onClick="alert('foobar'); return none;">Click me!</a>








====================================================================================================================


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值