symfony权威指南(2)之页面创建基础
2015-10-01 22:28
741 查看
symfony把页面组织成模块,在建立页面之前,你必须先建立一个模块,也就是一个symfony能识别的目录结构的空壳。
可以用如下命令创建一个symfony模块,比如创建一个名叫php的模块:
这条命令在modules目录下生成了如下文件:
其中actions.class.php文件的内容如下:
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());
}
现在访问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>
4、链接到另一个动作
传统的超链接一般类似与下面这样:
?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'); ?>
5、从请求中取得信息
在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";
}
可以用如下命令创建一个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>
4、链接到另一个动作
传统的超链接一般类似与下面这样:
?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'); ?>
5、从请求中取得信息
在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');
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Symfony事件类型
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)