做前端怎能完全不通后端?哈哈,开个玩笑而已。
【Project 1】
万事开头难果然不假:从切完他们天马行空的设计,到实现他们各种需要的特效,再到现在用zf敲后台跑通数据库。整整一周时间。接下来就是等他们上传数据测试,和让头帮忙完善了。
上帝啊,我人生中第一个完全自己一手搞定的项目终于诞生了,不是没写过后台,但是从来没有上线发布,都是很少的代码的小case。然后用了从来没用过的zf框架,这个我听了两小时视频的东东。。。一边看手册一边google,这个项目总算走到最后一步了。。。。
come on!~听说后面还有二期和三期,加油加油!!!!!!!!等项目完工再来整理这一堆乱码
1、创建zf1.12的空项目
用zendstudio创建空项目,然后用zf.bat以该项目文件夹作为目录,创建zf1.12空项目。
2、空项目创建之后
【1】根据需要,在application.ini文件中进行相关配置。示例如下:/* 配置项一定要放在production之下 */
[production]
phpSettings.display_startup_errors = 1 /* 系统配置,用于调试 */ 本周开始做,一直没开这三个选项,盲人摸象般解决了各种问题,但时间浪费了不少。
phpSettings.display_errors = 1 /* 系统配置,用于调试 */
resources.frontController.params.displayExceptions = 1 /* 系统配置,用于调试 */
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
/* 以下为自定义共用配置项*/
website.title = "**********"
website.keywords = "**********"
website.description = "**********"
website.path = '/catholicProject/gunuoqi/public/'
iDatabase.project_id = "**********"
iDatabase.password = "**********"
【2】在bootstrap.php中进行如下设置:
/* 引入全局使用的自定义常量文件 */
protected function _initConst ()
{
require 'constants.php';
require 'mongoConstants.php';
}
protected function _initConfig()
{
$this->_config = $this->getOptions();
Zend_Registry::set('config', $this->_config);
}
protected function _initMongoDB ()
{
include('iDatabase.php');
$mongoDB = new iDatabase($this->_config['iDatabase']['project_id'], $this->_config['iDatabase']['password']);
Zend_Registry::set('mongoDB', $mongoDB);
//var_dump($mongoDB->find('group',array()));
}
【3】ajax请求:
注意js的ajax请求地址可以在头部写入前缀,后面进行拼接。该前缀由php输出,即在application.ini中定义的配置项 website.path 的值。该值的设置见【1】所示。
【4】布局文件的简单使用:
范例如下:
其中需要注意的是:图片,js,css的地址,改地址可以由website.path 来拼接。也可以采取《》中所示第二种兼容性方法。
其实,该方法提取出来的值跟上面website。path所设置的值一般情况下都是以根目录为顶级目录。
<?php echo $this->doctype() ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><?php echo $this->config["website"]["description"].$this->title?></title>
<meta name="description" content="<?php echo $this->config["website"]["description"]?>">
<meta name="Keywords" content="<?php echo $this->config["website"]["keywords"]?>">
<link rel="stylesheet" type="text/css" href="<?php echo $this->public;?>/css/public.css">
<link rel="stylesheet" type="text/css" href="<?php echo $this->public;?>/css/<?php echo $this->style?>.css">
<script type="text/javascript" src="<?php echo $this->public;?>/js/pl-jquery.min.v1.7.1.js"></script>
<script type="text/javascript" src="<?php echo $this->public;?>/js/pl-jscroll.js"></script>
<?php if($this->config){
echo '<script type="text/javascript">var websitePath = "'.$this->config["website"]["path"].'"</script>';
}?>
</head>
<body id="<?php echo $this->id ?>_box">
<?php
if ($this->isLoading){
echo '<div class="load_box" id="load_box"><div class="load_warp"><img src="'.$this->public.'/img/index-load-loading.gif" alt="古诺奇整体厨房"></div></div>';
}
?>
<div class="body_box">
<div class="header">
<div class="logo fl"><a href="<?php echo $this->public;?>/"></a></div>
<div class="home fr"><a href="<?php echo $this->public;?>/"></a></div>
</div>
<div class="warp">
<?php echo $this->layout()->content ?>
</div>
</div>
<?php if(!$this->isHasNoFooter){
echo('<div class="footer">© 2012 *****有限公司</div>');
}?>
<script type="text/javascript" src="<?php echo $this->public;?>/js/public.js"></script>
</body>
</html>
【4】如果是用的wamp集成环境,一定要手动开启php_soap支持,譬如这次,用头给的芒果的接口时,导致数据库连接一直不成功,最后才发现是这个问题。唉。
【5】ajax请求,php的相关代码:
if($method == "ajax"){
print_r($json); // 打印出数据
exit(); //阻止模板调用,结束方法
return; //返回
}
【6】文件引用,路径问题:
require_once 'Zend/Controller/Action.php'; // 引用library中的库文件目录
require_once APPLICATION_PATH.'/models/Group.php'; // 引用application中其他文件夹中的php文件
注意:上面对action的引用,在用zendstudio自动生成模板文件时,会自动加上这句,注释掉该行代码仍能运行。
【7】头给的iDatabase接口中,各不同条件查询的使用范例:
var_dump($id);
$rst_group = $this->_group->findOne(array("_id" => $id));
$rst_groupHot = $this->_groupHot->find(array("gourp_id"=> $id), array(),array(),0,100);
$rst_groupXijie = $this->_groupXijie->find(array("group_id"=> $id), array(),array(),0,100);
var_dump($this->_group->find(array(),array()));
3、项目发到到5.40之后
a.修改路径 application.ini中
website.path = '/项目目录文件名/'
b.添加重定向,在.htaccess文件中
rewritebase /项目目录文件名/
【Project 2】
上一次做PHP项目,已经是一年多以前。因为不想求人,决定自己搭UED Workspace 平台,再次投入 PHP 的怀抱。加油!~
-- 2014.5.12
%>_<%...因为某些气死人的原因,中途停掉,现在重新启动。手里资源多了,可以做的事情更多了,我可以专心规划和搭建平台了。
-- 2014.10.28
1、以 iwebsite2 为模板新建空项目,数据库 MongoDB
2、