`
ythzjk
  • 浏览: 75451 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Zend Framework实例教程2

阅读更多

最后,admin.php模板可以用来批准新闻条目:

 

<html>
<head>
  <title>News Admin</title>
</head>
<body>
  <form action="/admin/approve" method="POST">
  <?php foreach ($this->news as $entry) { ?>
  <p>
    <input type="checkbox" name="ids[]"
    value="<?php echo $this->escape($entry['id']); ?>" />
    <?php echo $this->escape($entry['title']); ?>
    <?php echo $this->escape($entry['content']); ?>
  </p>
  <?php ?>
  <p>
    Password:<br /><input type="password" name="password" />
  </p>
  <p><input type="submit" value="Approve" /></p>
  </form>
</body>
</html>

 

提示:为了保持简单,这个表单用密码作为验证机制。

 

使用到模板的地方,你只需要把注释替换成几行代码。如IndexController.php就变成下面这样:

 

<?php

class IndexController extends Zend_Controller_Action 
{
    public function 
indexAction()
    {
        
/* List the news. */
        
$db Zend::registry('db');
        
$view Zend::registry('view');
        
$view->news $db->getNews();
        echo 
$view->render('index.php');
    }

    public function 
noRouteAction()
    {
        
$this->_redirect('/');
    }
}

?>

 

因为条理比较清楚,这个程序首页的整个业务逻辑只有四行代码。AddController.php更复杂一点,它需要更多的代码:

 

<?php

class AddController extends Zend_Controller_Action
{
    function 
indexAction()
    {
        
$this->_redirect('/');
    }

    function 
commentAction()
    {
        
/* Add a comment. */
        
$filterPost = new Zend_InputFilter($_POST);
        
$db Zend::registry('db');
        
$name $filterPost->getAlpha('name');
        
$comment $filterPost->noTags('comment');
        
$newsId $filterPost->getDigits('newsId');
        
$db->addComment($name$comment$newsId);
        
$this->_redirect("/view/$newsId");
    }

    function 
newsAction()
    {
        
/* Add news. */
        
$filterPost = new Zend_InputFilter($_POST);
        
$db Zend::registry('db');
        
$title $filterPost->noTags('title');
        
$content $filterPost->noTags('content');
        
$db->addNews($title$content);
        
$this->_redirect('/');
    }

    function 
__call($action$arguments)
    {
        
$this->_redirect('/');
    }
}

?>

 

因为用户在提交表单后被重定向,这个controller不需要视图。

 

AdminController.php,你要处理显示管理界面和批准新闻两个action:

 

<?php

class AdminController extends Zend_Controller_Action
{
    function 
indexAction()
    {
        
/* Display admin interface. */
        
$db Zend::registry('db');
        
$view Zend::registry('view');
        
$view->news $db->getNews('NEW');
        echo 
$view->render('admin.php');
    }

    function 
approveAction()
    {
        
/* Approve news. */
        
$filterPost = new Zend_InputFilter($_POST);
        
$db Zend::registry('db');
        if (
$filterPost->getRaw('password') == 'mypass') {
            
$db->approveNews($filterPost->getRaw('ids'));
            
$this->_redirect('/');
        } else {
            echo 
'The password is incorrect.';
        }
    }

    function 
__call($action$arguments)
    {
        
$this->_redirect('/');
    }
}

?>

 

最后是ViewController.php

 

<?php

class ViewController extends Zend_Controller_Action
{
    function 
indexAction()
    {
        
$this->_redirect('/');
    }

    function 
__call($id$arguments)
    {
        
/* Display news and comments for $id. */
        
$id Zend_Filter::getDigits($id);
        
$db Zend::registry('db');
        
$view Zend::registry('view');
        
$view->news $db->getNews($id);
        
$view->comments $db->getComments($id);
        
$view->id $id;
        echo 
$view->render('view.php');
    }
}

?>

 

虽然很简单,但我们还是提供了一个功能较全的新闻和评论程序。最好的地方是由于有较好的设计,增加功能变得很简单。而且随着Zend Framework越来越成熟,只会变得更好。

 

更多信息

 

这个教程只是讨论了ZF表面的一些功能,但现在也有一些其它的资源可供参考。在http://framework.zend.com/manual/有手册可以查询,Rob Allen在http://akrabat.com/zend-framework/介绍了一些他使用Zend Framework的经验,而Richard Thomas也在http://www.cyberlot.net/zendframenotes提供了一些有用的笔记。如果你有自己的想法,可以访问Zend Framework的新论坛:http://www.phparch.com/discuss/index.php/f/289//

 

结束语

 

要对预览版进行评价是很容易的事,我在写这个教程时也遇到很多困难。总的来说,我想Zend Framework显示了承诺,加入的每个人都是想继续完善它。

 

提示有什么评论、想法或问题,请访问Zend Framework的新论坛:http://www.phparch.com/discuss/index.php/f/289//

 

关于作者—Chris Shiflett是Brain Bulb的负责人,而Brain Bulb是一家专业的PHP开发和安全方面的顾问公司。Chris的blog是http://shiflett.org
分享到:
评论

相关推荐

    Zend Framework实例教程

    ### Zend Framework实例教程知识点解析 #### 一、简介与安装要求 **Zend Framework**是一款开源的PHP框架,设计用于帮助开发者构建稳定、高效且可扩展的Web应用。本教程聚焦于介绍Zend Framework的核心特性和如何...

    ZendFramework 1.12.9 代码和文档.rar

    1. **下载与解压**:首先,从官方网站或者提供的压缩包"ZendFramework-1.12.9.zip"下载并解压到服务器的适当位置。 2. **环境要求**:确保服务器环境满足PHP 5.2.5或更高版本。 3. **配置自动加载**:通过设置`...

    zend framework2例子album 完整能运行

    Zend Framework 2(ZF2)是一个面向对象的、模块化且高性能的PHP开发框架,用于构建Web应用程序和服务。本示例“album”是ZF2官方提供的一个基础教程项目,旨在帮助开发者快速理解和学习如何在ZF2中进行实际的开发...

    Zend FrameWork 中文教程

    本教程将深入探讨如何利用Zend Framework进行开发,特别针对中国的PHP开发者,通过实例学习,使你对这个强大的框架有更深入的理解。 **1. MVC架构** 在Zend Framework中,MVC模式是核心设计思想。模型(Model)处理...

    Zend Framework入门教程之Zend_Config组件用法详解

    在本教程中,我们将深入了解Zend Framework框架中的Zend_Config组件,这是一款专门用于处理应用配置信息的工具。通过实例讲解,我们将会掌握Zend_Config组件的基本用法,并学习如何操作不同类型配置文件的方法。 ...

    ZendFramework中文文档

    1. Introduction to Zend Framework 1.1. 概述 1.2. 安装 2. Zend_Acl 2.1. 简介 2.1.1. 关于资源(Resource) 2.1.2. 关于角色(Role) 2.1.3. 创建访问控制列表(ACL) 2.1.4. 注册角色(Role) 2.1.5. 定义访问...

    ZendFramework入门实例源码

    本实例源码提供了对 Zend Framework 的基础认识和实际操作经验,包括入门级的项目搭建和数据库操作。 **1. Zend Framework 概述** Zend Framework 提供了一套完整的开发工具和库,支持各种Web服务,如RESTful API、...

    ZendFramework-1.11.10-manual-zh.zip

    总的来说,Zend Framework 1.11.10的官方中文手册不仅涵盖了框架的基本概念和组件,还提供了详细的API参考和实例教程,是开发者学习和应用Zend Framework的重要资源。通过深入学习和实践,开发者可以充分利用这个...

    zend framework2 demo

    综上所述,“zend framework2 demo”是一个展示 Zend Framework2 基本功能和架构的实例,它包含了一个基本的MVC结构和必要的配置文件,适合初学者了解和学习该框架。通过深入了解和实践,开发者能够掌握如何在实际...

    Zend Framework教程之Application用法实例详解

    在本文中,我们将深入探讨 Zend Framework 中的 Zend_Application,这是一个至关重要的组件,它为框架应用程序提供了基础结构和启动流程。Zend_Application 作为程序的入口点,主要负责两件关键的事情:初始化PHP...

    Zend Framework教程之Zend_Db_Table表关联实例详解

    综上所述,通过本教程的介绍和实例分析,我们可以看到Zend Framework通过Zend_Db_Table类如何方便地实现复杂数据库表之间的关系管理。开发者需要掌握使用这些类和属性的技巧,以及在实现过程中需要注意的事项,才能...

    Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解

    在Zend Framework中,请求对象的封装由Zend_Controller_Request组件实现,该组件是整个MVC架构中用于处理客户端请求的核心部分。 首先,请求对象是一个简单的值对象,它在前端控制器、路由器、分发器和控制类之间...

    php zend framework code

    这个教程聚焦于 `Zend Framework 1.9.0` 版本,该版本发布于2010年,虽然相对较老,但对于理解框架的基本原理和结构仍然非常有价值。 ** MVC 架构模式** 在 `Zend Framework` 中,Model-View-Controller(MVC)...

    ZendFramework 1 cache for Redis,Memcached

    标题"ZendFramework 1 cache for Redis,Memcached"表明这是一个关于使用 Zend Framework 1 框架来实现缓存功能的教程,重点在于集成和使用 Redis 和 Memcached 这两种流行的数据缓存系统。Zend Framework 是一个广泛...

    Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解

    主要介绍了Zend Framework教程之分发器Zend_Controller_Dispatcher用法,结合实例形式详细分析了分发器Zend_Controller_Dispatcher的结构,功能,使用技巧与相关注意事项,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics