symfony权威指南(2)之页面创建基础

2024-06-02 19:18

本文主要是介绍symfony权威指南(2)之页面创建基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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>


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');

这篇关于symfony权威指南(2)之页面创建基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1024847

相关文章

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”