所有
我有一个使用Zend Framework构建的PHP Web应用程序和带有MySQL数据库的MVC。我计划为应用程序实现上下文相关帮助..我做了我的研究,但我没有找到任何关于如何实现这一目标的好指示。
有人能指点我一本书或一个很好的参考文献吗?我看到这在主要的保险公司网站和其他Web 2.0网站上实现。他们如何做到这一点?
由于
答案 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,然后可以将其用作查找关键字以检索相关的帮助信息)。