symfony权威指南(2)之页面创建基础
来源:互联网 发布:便宜好用剃须刀知乎 编辑:程序博客网 时间:2024/06/07 02:03
symfony把页面组织成模块,在建立页面之前,你必须先建立一个模块,也就是一个symfony能识别的目录结构的空壳。
可以用如下命令创建一个symfony模块,比如创建一个名叫php的模块:
这条命令在modules目录下生成了如下文件:
其中actions.class.php文件的内容如下:
/*** php actions.** @package blog* @subpackage php* @author Your name here* @version SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $*/class phpActions extends sfActions{/** * Executes index action * * @param sfRequest $request A request object */ public function executeIndex(sfWebRequest $request) { $this->forward('default', 'module'); }}
indexSuccess.php文件的内容为空。
现在访问http://localhost:8080/php,可以看到如下的页面:
现在让我们进入正题,来创建一个新的页面,分为如下步骤:
1、增加一个动作
我们在actions.class.php文件中,新增如下代码:
public function executeTest() { }这样我们就在php模块中新增了一个test动作,注意在symfony中动作的命名规范:
①动作的名字永远是executeXxx(),名字第二部分的第一个字母总是大写
②URL是区分大小写的,symfony也是区分大下写的,这就是说,如果你定义一个executemyaction()方法或者executeMyaction,然后在浏览器里面调用myAction方法,symfony会返回404错误信息。
如果现在访问http://localhost:8080/php/test,可以看到如下的页面:
这个页面告诉我们我们还要在templates目录下创建一个testSuccess.php文件,内容如下:
<p>hello,world!</p>
2、从动作传递信息给模板
symfony让动作类的属性可以直接在模板的全局命名空间里被访问(即在动作里通过$this->variableName访问的变量在模板中可以直接用$variableName访问到),还是用test动作来试验:
public function executeTest() { $this->hour = date("H", time()); }
<p>hello,world!</p><?php if($hour >= 18): ?><p>it's already <?php echo $hour ?>,time to go to bed</p><?php endif; ?>
现在访问http://localhost:8080/php/test,
3、通过表单从用户获取数据
symfony提供了表单辅助函数来帮助快速书写html代码,下面是一个例子:
<?php use_helper('form') ?><?php echo form_tag('php/another') ?><?php echo label_for('name','what\'s your name?' ) ?><?php echo input_tag('name') ?><?php echo submit_tag('ok') ?></form>
传统的超链接一般类似与下面这样:
?php echo "<a href='another?name=anonymous'>i will never say my name</a>"; ?>但是这样的链接有一个弊端,那便是如果做了伪静态的话,要到模板文件中将这些链接地址一一修改,在symfony对这种问题提供了一个辅助函数link_to(),下面是一个例子:
<?php echo link_to('i will never say my name', 'php/another?name=anonymous'); ?>
在symfony框架中你可以通过sfAction对象的getRequestParameter()方法取得相关的数据。下面是一个例子:
public function executeAnother() { $this->name = $this->getRequestParameter('name'); }当然如果操作很简单,你可以直接在模板中直接通过$sf_params的get()方法来获取参数的值。下面的两种写法是等价的:
if($sf_params->has('name')){echo "hello,".$sf_params->get('name');}else{echo "hello, nobody";}
echo "hello,".$sf_params->get('name', 'nobody');
- symfony权威指南(2)之页面创建基础
- symfony权威指南(3)之symfony配置
- symfony权威指南(4、1)之动作
- symfony权威指南(1)symfony的安装
- 《HTML5权威指南》之创建布局
- JavaScript基础学习之-JavaScript权威指南-第三章类型、值和变量(2)
- JavaScript权威指南--基础篇2
- http权威指南 第一部分(基础)
- mongodb权威指南-基础
- JavaScript基础学习之-JavaScript权威指南第八章--函数
- JavaScript基础学习之-JavaScript权威指南--第一章解释器
- git版本库创建三部曲(git权威指南笔记)
- Squid中文权威指南 第七章(磁盘缓存基础 )
- jQuery权威指南(第2版)
- Netty权威指南(第2版)
- HTTP权威指南(读书笔记)2
- 《JavaScript权威指南》阅读笔记(2)
- Hadoop权威指南-2
- JavaWeb之JDBC(数据库连接)
- 《学习日记》CSS
- [微软]题目1 : Farthest Point
- 黑马程序员————JAVA之网络编程
- response.setContentType()的作用及参数
- symfony权威指南(2)之页面创建基础
- html阅读pdf文件主要代码。
- ios 里 对 sqlite数据库进行操作的最底层C函数说明 - xcode里查不到 --特么是C++的 @-@
- osg学习资料地址集
- 很好用的Eclipse反编译插件
- [微软]题目2 : Total Highway Distance
- 遍历Map的方式
- android--计时器(Timer)
- Marshal.StructureToPtr(Object, IntPtr, Boolean)[将数据从托管对象封送到非托管内存块]