Home | Mirror | Search

4. Zend Framework

4.1. Install Zend Framework

			
sudo mv ZendFramework-1.10.2 /usr/local/share/
sudo ln -s
/usr/local/share/ZendFramework-1.10.2 /usr/local/share/zend
			
			

~/.bashrc

alias zf.sh=path/to/ZendFramework/bin/zf.sh

			
alias zf.sh=/usr/local/share/zend/bin/zf.sh
			
			

4.2. Create Your Project

			
$ zf.sh create project quickstart
			
			

			
$ cd quickstart/library; ln -s
/usr/local/share/zend/library/Zend .
			
			

Rewrite

.htaccess內容如下:

			
RewriteEngine on
RewriteRule !".(js|ico|gif|jpg|png|css)$ index.php
			
			

4.3. Create a virtual host

		
<VirtualHost *:80>
    ServerName quickstart.local
    DocumentRoot /path/to/quickstart/public

    SetEnv APPLICATION_ENV "development"

    <Directory /path/to/quickstart/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
		
			

/etc/hosts

			
127.0.0.1 quickstart.local
			
			

4.4. Database

4.4.1. MySQL

			
zf configure dbadapter "adapter=Pdo_Mysql&username=test&password=test&dbname=test"
			
				

4.4.2. SQLite

		
$ sudo apt-get install php5-sqlite
mkdir -p data/db; chmod -R a+rwX data
		
				
		
zf.sh configure db-adapter \
'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/guestbook.db"' \
production

zf.sh configure db-adapter \
'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/guestbook-testing.db"' \
testing

zf.sh configure db-adapter \
'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/guestbook-dev.db"' \
development
		
				

4.5. zf.sh

4.5.1. controller

		
zf create controller Guestbook
		
				
4.5.1.1. action
			
	zf create action sign Guestbook
			
					

4.5.2. model

		
zf create model Guestbook
		
				
4.5.2.1. db-table
			
zf create db-table Guestbook guestbook
			
					

4.5.3. layout

		
zf enable layout
		
				

4.5.4. form

		
zf create form Guestbook
		
				

4.6. Smarty

			
<?php

//打開錯誤提示

error_reporting(E_ALL|E_STRICT);

//設定時區

date_default_timezone_set("Asia/Shanghai");

//指明引用檔案的路徑

set_include_path('.'.PATH_SEPARATOR.'./library'.PATH_SEPARATOR.'./app/model/'.PATH_SEPARATOR.get_include_path());

//必須手動加載Loader.php

include "Zend/Loader.php";

//自動加載類,使用時,直接實例化使用

function __autoload($class){

    Zend_Loader::loadClass($class);

}

   //getInstance()方法用來獲取前端控製器實例

   $frontController = Zend_Controller_Front::getInstance();

   //設定前端路由器的工作目錄,即cotroller

   $frontController->setControllerDirectory(array("default"=>"app/controller"));

   //拋出異常

   $frontController->throwExceptions(true);

   //設置基地址,方便以後url的跳轉用戶,注意,區分大小寫!

   $frontController->setBaseUrl("/phpzend");

//使用smarty模版需關閉本身的視圖助手.

$frontController->setParam("noViewRenderer", true);

       // 關閉錯誤提示,發生請求錯誤時候,轉到ErrorController的errorAction控製器

//$frontController->throwExceptions(false);

//對。。進行註冊

Zend_Registry::set("font", $frontController);

//------------配置Smarty模版 ----------------

include "smarty/Smarty.class.php";

/**

* 對smarty模版進行初始化

**/

$views = new Smarty();

//$views->left_delimiter = "{{";

//$views->right_delimiter = "}}";

$views->compile_dir = "app/template_c";
$views->cache_dir = "app/template_c/cache_c";
$views->template_dir = "app/template";
function smarty_block_dynamic($param,$content,&$views)
{
      return $content;
}

$views->register_block("dynamic","smarty_block_dynamic",false);

Zend_Registry::set("views", $views);

//開始運行程序

$frontController->dispatch();
			
			

			
<?php

   //控製器層

   class IndexController extends Zend_Controller_Action{

     var $views;   /*模板對象*/

     var $data;    /*傳遞模版變數的對象*/

      function init()

      {

             //拿回註冊過的對象

             $this->views = Zend_Registry::get("views");

    }

      function indexAction()

      {

             //定義模版顯示的變數

             $data['title']="hello world";

             //傳遞變數到模版

             $this->views->assign($data);

             //顯示模版

             $this->views->display("index/index.tpl");

                       echo "<p>in IndexController::indexAction()</p>";

    }

      function addAction()

      {

      }

}
			
			
comments powered by Disqus