modules 模块
models 模型
modules 对应路径控制的操作 都继承 Zend_Controller_Action,分前台(link)和后台(admin/link)控制器
models 对应表的类操作 都继承 class Common extends Zend_Db_Table
modules 每个动作方法对应一个URL
左侧菜单 :app\views\scripts\admin\script\common.js
admin/article/index
对应modeules下admin目录ArticleController.php的indexAction方法
=================================载入类文件
index.php
set_include_path('.' .PATH_SEPARATOR .'./library'.PATH_SEPARATOR .'./app/models/'.PATH_SEPARATOR .get_include_path());
//设置Zend Framework 自动载入类文件
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();//实现 Zend_Registry 自动转化成调用 Zend/Registry.php ,自动载入类文件
//*****************后期使用
//Zend_Loader::loadClass('Common_Plugin_Fckeditor');
//$oFCKeditor = new Common_Plugin_Fckeditor('content') ;
//来载入library 目录下的多级目录类文件
CategoryControler.php
require('CommonController.php');//得意于 index.php 的set_include_path
class Admin_CategoryController extends Admin_CommonController
{
var $category;
function init() {
parent::init();
$this->category = new Cate();
//Zend_Loader::loadClass('Common_Plugin_Fckeditor');
////$oFCKeditor = new Common_Plugin_Fckeditor('content') ;
//因为Cate.php是在models目录下,所以不必像上面那样loadclass来实例化
}
=======================初始化寄存器 和view
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
$registry = Zend_Registry::getInstance();
$config = new Zend_Config_Ini('./app/config/config.ini',null,true);
/*****************confing.ini 数组格式
[general]
db.adapter = PDO_MYSQL
db.host = localhost
db.username = root
db.password = 123456
db.dbname = zfblog
db.charset = utf8
db.prefix = zf_
[site]
st.domain = http://localhost/zf-blog
st.appdir = /zf-blog
st.sitename = pconline
st.keywords = ZFblog,Zend Framework开源blog,Zend Framework开源项目,ZF教程,Zend Framework最新教程,ZF项目源码下载,Zend
Framework项目源码下载
st.description = ZFblog,Zend Framework开源blog,Zend Framework开源项目,ZF教程,Zend_Framework最新教程,ZF项目源码下
载,Zend_Framework项目源码下载
st.version = 1.1
st.theme = g7_v5
*/
Zend_Registry::set('config',$config);
$view= new Zend_View();
Zend_Registry::set('theme', $config->site->st->theme);
$view->setScriptPath('./app/views/scripts/'.$config->site->st->theme.'/'); //模板文件位置
$view->setHelperPath('./app/views/helpers/','My_View_Helper');
$registry['view'] = $view;
//邮件配置
Zend_Registry::set('smtp',$config->mail->ml->server);
Zend_Registry::set('username',$config->mail->ml->username);
Zend_Registry::set('password',$config->mail->ml->password);
//*****************Controller.php文件调用:$this->view->keywords = $this->registry['keywords'];
==========================控制器
/*****************控制器一定要指定addModuleDirectory,这样来实现
http://localhost/zf-blog/admin/article/add自动到
./app/modules/admin/controllers/ArticleController.php 方法addaction()
http://localhost/zf-blog/link
自动找到
./app/modules/default/controllers/linkController.php 方法indexaction()
*/
s
$frontController = Zend_Controller_Front::getInstance();
$frontController->setBaseUrl($config->site->st->appdir) //设置基本路径
->setParam('noViewRenderer', true) //不采用官方view
->addModuleDirectory('./app/modules')
->setParam('useDefaultControllerAlways', true)
->setParam('noErrorHandler', true)
->registerPlugin(new Common_Plugin_MyAuth($auth, $acl))
->registerPlugin(new Zend_Controller_Plugin_ErrorHandler())
->throwExceptions(true) //false:关闭错误信息
->dispatch();
模板文件---嵌入php代码
<?php foreach ($this->paginator as $lv): ?>
<tr>
<td width="15%"><a class="editlink" href="#" title="点击编辑" alt="<?=$lv['id']?>|<?=$lv['name']?>|<?=$lv['url']?>|<?=$lv['logo']?>|<?=$lv['title']?>"><?=$this->escape($lv['name']); ?></a></td>
<td width="50%"><?=$this->escape($lv['title']); ?></td>
<td width="12%"><?=$this->escape($lv['typename']); ?></td>
<td width="8%"><?=$this->escape($lv['orderNo']); ?></td>
<td width="10%"><?=$this->escape($lv['isApp']); ?></td>
<td width="5%">
<a href="<?=$this->url(array('module'=>'admin','controller'=>'link','action'=>'delete','id'=>$lv['id']),null,true);?>" title="delete"><img src="<?=$this->tplpath;?>images/error.gif" border="0" /></a>
<?php
if($this->escape($lv['isApp'])=='未通过'){
?>
<a href="<?=$this->url(array('module'=>'admin','controller'=>'link','action'=>'app','id'=>$lv['id']),null,true);?>" title="delete"><img src="<?=$this->tplpath;?>images/correct.gif" border="0" /></a>
<?php
}
?>
</td>
</tr>
<?php endforeach;?>
=============================fck
<?=$this->editor;?>
* fck编辑器
*
* @param string $content
*/
function fckAction($content='')
{
//加载FCK类
Zend_Loader::loadClass('Common_Plugin_Fckeditor');
//实例化这个类
$oFCKeditor = new Common_Plugin_Fckeditor('content') ;
//这里是您放置FCK文件的路径.
$oFCKeditor->BasePath = $this->view->domain."/public/fckeditor/";
//FCK皮肤
$oFCKeditor->Config['SkinPath'] =
$this->view->domain.'/public/fckeditor/editor/skins/silver/' ;
$oFCKeditor->Width = '100%';
$oFCKeditor->Height = '600';
$oFCKeditor->Value = $content;
$this->view->editor = $oFCKeditor->CreateHtml();
}
===========================分页zend/view/helper/ paginationControl.php
<?=$this->paginationControl($this->paginator,'Elastic','page.php');?>
//page.php模板文件
//$this->paginationControl=====
zend/view/helper/ paginationControl.php
$link_arr = array();
foreach ($array as $key=>$value) {
$link_arr[$key]['id'] = $value['id'];
$link_arr[$key]['name'] = $value['name'];
$link_arr[$key]['url'] = $value['url'];
$link_arr[$key]['logo'] = $value['logo'];
$link_arr[$key]['title'] = $value['title'];
$link_arr[$key]['typename'] = $cate[$value['type']];
$link_arr[$key]['orderNo'] = $value['orderNo'];
$link_arr[$key]['isApp'] = $value['isApp']?'通过':'未通过';
}
$paginator = Zend_Paginator::factory($link_arr);
=======================================模板写法
<?php if (count($this->paginator)): ?>
<?php endif; ?>
<?php foreach ($this->paginator as $lv): ?>
<?php endforeach;?>
===============================zend cache
前台首页indexcontroller.php
if(!$array = $this->cache->load('indexlistBlog')) {
$array = $this->blog->listBlog();
$this->cache->save($array, 'indexlistBlog');
}
//取出链接类别
if(!$linktype = $this->cache->load('listLinktype')) {
$linktype = $this->linktype->listLinktype();
$this->cache->save($linktype, 'listLinktype');
}
//取出链接
if(!$linkarr = $this->cache->load('listLink')) {
$linkarr = $this->link->listlink();
$this->cache->save($linkarr, 'listLink');
}
Modules/default/controllers/CommonController.php Zend_Cache_Core 对象
class CommonController extends Zend_Controller_Action
{
var $cache;
function init() {
// 缓存配置
$frontendOptions = array(
'lifeTime' => 120, // 两分钟的缓存生命期
'automatic_serialization' => true
);
$backendOptions = array(
'cache_dir' => "data/cache/" // 放缓存文件的目录
);
// 取得一个Zend_Cache_Core 对象
$this->cache = Zend_Cache::factory('Core','File',$frontendOptions,$backendOptions);
}
==========================db
入口:
Zend_Registry::set('config',$config);
$dbAdapter = Zend_Db::factory($config->general->db->adapter,$config->general->db->toArray());
$dbAdapter->query("SET NAMES {$config->general->db->charset}");
Zend_Db_Table::setDefaultAdapter($dbAdapter);
Zend_Registry::set('dbAdapter',$dbAdapter);
Zend_Registry::set('dbprefix',$config->general->db->prefix); //写到寄存器方便其他地方调用
Models 下所有类文件blog.php link.php extends Common
<?php
class Common extends Zend_Db_Table
{
public function __construct()
{
$dbprefix = Zend_Registry::get('dbprefix');
$this->_name = $dbprefix.$this->_name;
parent::__construct();
}
}
====================== .htaccess
RewriteEngine on
RewriteRule !\.(js|ico|txt|gif|jpg|png|css|html|xml)$ index.php
php_flag magic_quotes_gpc off
php_flag register_globals off
=======================目录结构

- 大小: 224.6 KB
分享到:
相关推荐
"ZendFramework 1.7 Blog源码" 提供了一个学习和研究 Zend Framework MVC 结构的实例,你可以从中了解如何组织和构建基于 PHP 的 Web 应用,同时学习 PHP 的 OOP 实践以及数据库操作。通过对源代码的分析,开发者...
- **扩展资源**:推荐一些与Zend Framework相关的书籍、博客等学习资源。 通过以上十个方面的详细介绍,《Beginner's Guide to Zend Framework》不仅为初学者提供了全面的基础知识,也为有经验的开发者提供了深入的...
本资源是"CursoZendFramework:Mine curso de Zend Framework 2-博客WebPatterns",这是一门针对 Zend Framework 2 的在线课程,旨在帮助开发者深入理解和掌握这一强大的PHP框架。Zend Framework 2(简称ZF2)是PHP...
- **Zend Framework**:面向对象编程的Pear版本。 - **Yii**:高性能、安全的框架。 - **KiwiPHP**:工业级微内核设计。 - **Symfony**:配置简单,学习曲线较平缓。 #### 六、Web中的MVC开发模式 **应用场景一**...
本文将详细介绍thinkPHP框架中多层控制器和多级控制器的使用,结合实例分析其结构、原理及使用方法。 首先需要了解的是,在ThinkPHP中,控制器是负责接收用户的请求并调用模型和视图完成用户请求处理的任务。而多层...