上下文敏感帮助 - PHP类

时间:2010-03-08 17:21:10

标签: php mysql ajax zend-framework

所有

我有一个使用Zend Framework构建的PHP Web应用程序和带有MySQL数据库的MVC。我计划为应用程序实现上下文相关帮助..我做了我的研究,但我没有找到任何关于如何实现这一目标的好指示。

有人能指点我一本书或一个很好的参考文献吗?我看到这在主要的保险公司网站和其他Web 2.0网站上实现。他们如何做到这一点?

由于

3 个答案:

答案 0 :(得分:2)

我使用PHPMarkdown语法通过简单的wiki完成了这项工作。

维基中存储了更多其他相关文档,因此上下文帮助页面以标题中的前缀“帮助”开头。这很有用,因为它允许帮助页面引用其他业务流程文档,并节省我在几个地方重复自己(笑)。

在布局脚本中,我添加了一个菜单项“Help”,它通过帮助器

呈现
class Zend_View_Helper_ContextHelp extends Zend_View_Helper_Abstract
{
    //-------------------------------------------------------------------------
    /*! \brief Context sensitive help: links to wiki page
    */
    function contextHelp( $title = 'Help' )
    {
        $controller = Zend_Controller_Front::getInstance();
        $request = $controller->getRequest();
        $page = 'Help ' . ucfirst( $request->getControllerName() );
        if ($request->getActionName() != 'index') $page .= ' ' . ucfirst( $request->getActionName() );
        return $this->view->url( array( 'controller' => 'manual', 'action' => 'index', 'page' => $page ), null, true );
    }
}

所以这个链接在每个页面的右上角都可见。

对于客户/编辑操作,帮助页面将为“帮助客户编辑”。我的很多页面都有嵌入其中的帮助信息和链接:因此表单字段包含使用示例提供正确内容的说明,其中一些链接指向维基页面以获取更多详细信息或扩展示例。

wiki数据库架构非常简单

CREATE TABLE `manual` (
  `id` mediumint(9) NOT NULL AUTO_INCREMENT COMMENT 'Unique manual identifier',
  `title` varchar(40) NOT NULL DEFAULT '' COMMENT 'Short title of this page',
  `content` text NOT NULL COMMENT 'Content of the page. (wiki format)',
  `user_id` mediumint(9) NOT NULL DEFAULT '0' COMMENT 'The related user',
  `last_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Date and time this record was last changed',
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  KEY `title` (`title`),
  KEY `last_modified` (`last_modified`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='Franchise Manual' AUTO_INCREMENT=50 ;

很高兴发布手册模型和控制器(以及一些支持帮助者),但它们有点长...如果您有兴趣,请告诉我,我会发一篇博文并从这里链接到它。< / p>

答案 1 :(得分:1)

考虑使用专门的应用程序(例如Wiki)来创建和维护文档,并从应用程序中链接到wiki中的单个页面。我正在计划类似的东西,我很确定这是一个非常好的方法。

如果你使用Wiki,你可以让你的帮助功能(无论看起来像什么)指向像documentation:installation:4_creating_databases这样的维基页面,并使用自定义模板在弹出窗口中显示维基页面。

至于找到合适的应用程序来维护文档,也许这个问题有助于:Good documentation software,也许还有minimalistic tools for developer documentation(略有不同的焦点,但非常好的建议)。

答案 2 :(得分:0)

示例确实会有所帮助,但我猜他们会为应用中的每个屏幕提供一个唯一ID,并将相关帮助存储在由此ID链接的数据库中。无论如何我就是这样做的:p。

BTW还可以进一步以相同的方式链接屏幕区域(即,为字段集或甚至单独的字段提供唯一的ID,然后可以将其用作查找关键字以检索相关的帮助信息)。