ホームページ php教程 PHP开发 Zend Framework Smarty 拡張機能の実装方法

Zend Framework Smarty 拡張機能の実装方法

Dec 26, 2016 pm 03:37 PM

この記事の例では、Zend Framework Smarty 拡張機能の実装方法について説明します。ご参考までに、以下にシェアさせていただきます:

今日はZFフレームワークでSmartyテンプレートを拡張する方法をまとめます。ZFのヘルプドキュメントで詳しく紹介されていますので、ここでもう少し詳しく説明します。 。

1. Smarty のコア ファイル パッケージを lib フォルダーに配置します。ファイル パッケージには (internals/,plugins/,Config_File.class.php,Smarty.class.php,Smarty_Compiler.class.php,debug.tpl) が含まれている必要があります。

2. Zend/View の下に Smarty.php を追加します。ファイルの内容は次のとおりです:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

<?php

/**

* Zend_View_Interface

*/

require_once &#39;Zend/View/Interface.php&#39;;

/**

* Smarty

*/

require_once("smarty/Smarty.class.php");

/**

* 创建Smarty视图

*/

class Zend_View_Smarty implements Zend_View_Interface

{

  /**

   * Smarty object

   * @var Smarty

   */

  protected $_smarty;

  /**

   * Constructor

   *

   * @param string $tmplPath

   * @param array $extraParams

   * @return void

   */

  public function __construct($tmplPath = null, $extraParams = array())

  {

    $this->_smarty = new Smarty;

    if (null !== $tmplPath) {

      $this->setScriptPath($tmplPath);

    }

    foreach ($extraParams as $key => $value) {

      $this->_smarty->$key = $value;

    }

  }

  /**

   * Return the template engine object 

   *

   * @return Smarty

   */

  public function getEngine()

  {

    return $this->_smarty;

  }

  /**

   * Set the path to the templates

   *

   * @param string $path The directory to set as the path.

   * @return void

   */

  public function setScriptPath($path)

  {

    if (is_readable($path)) {

      $this->_smarty->template_dir = $path;

      return;

    }

    throw new Exception(&#39;Invalid path provided&#39;);

  }

  /**

  * set smarty缓存

  * @author lengfeng

  */

  public function setCompilePath($path){

    if (is_readable($path)) {

      $this->_smarty->compile_dir = $path;

      return;

    }

    throw new Exception(&#39;Invalid path provided&#39;);   

  }

  /**

  * set smarty 编译后文档

  * @author lengfeng

  */

  public function setCachePath($path){

    if (is_readable($path)) {

      $this->_smarty->cache_dir = $path;

      return;

    }

    throw new Exception(&#39;Invalid path provided&#39;);   

  }

  /**

   * Retrieve the current template directory

   *

   * @return string

   */

  public function getScriptPaths()

  {

    return array($this->_smarty->template_dir);

  }

  /**

   * Alias for setScriptPath

   *

   * @param string $path

   * @param string $prefix Unused

   * @return void

   */

  public function setBasePath($path, $prefix = &#39;Zend_View&#39;)

  {

    return $this->setScriptPath($path);

  }

  /**

   * Alias for setScriptPath

   *

   * @param string $path

   * @param string $prefix Unused

   * @return void

   */

  public function addBasePath($path, $prefix = &#39;Zend_View&#39;)

  {

    return $this->setScriptPath($path);

  }

  /**

   * Assign a variable to the template

   *

   * @param string $key The variable name.

   * @param mixed $val The variable value.

   * @return void

   */

  public function __set($key, $val)

  {

    $this->_smarty->assign($key, $val);

  }

  /**

   * Retrieve an assigned variable

   *

   * @param string $key The variable name.

   * @return mixed The variable value.

   */

  public function __get($key)

  {

    return $this->_smarty->get_template_vars($key);

  }

  /**

   * Allows testing with empty() and isset() to work

   *

   * @param string $key

   * @return boolean

   */

  public function __isset($key)

  {

     return (null !== $this->_smarty->get_template_vars($key));

  }

  /**

   * Allows unset() on object properties to work

   *

   * @param string $key

   * @return void

   */

  public function __unset($key)

  {

    $this->_smarty->clear_assign($key);

  }

  /**

   * Assign variables to the template

   *

   * Allows setting a specific key to the specified value, OR passing an array

   * of key => value pairs to set en masse.

   *

   * @see __set()

   * @param string|array $spec The assignment strategy to use (key or array of key

   * => value pairs)

   * @param mixed $value (Optional) If assigning a named variable, use this

   * as the value.

   * @return void

   */

  public function assign($spec, $value = null)

  {

    if (is_array($spec)) {

      $this->_smarty->assign($spec);

      return;

    }

    $this->_smarty->assign($spec, $value);

  }

  /**

   * Clear all assigned variables

   *

   * Clears all variables assigned to Zend_View either via {@link assign()} or

   * property overloading ({@link __get()}/{@link __set()}).

   *

   * @return void

   */

  public function clearVars()

  {

    $this->_smarty->clear_all_assign();

  }

  /**

   * Processes a template and returns the output.

   *

   * @param string $name The template to process.

   * @return string The output.

   */

  public function render($name)

  {

    return $this->_smarty->fetch($name);

  }

  /**

   * 设置是否生成缓存

   * 如果没有参数,默认为true

   */

  public function setCache($bool){

     if (isset($bool)) {

      $this->_smarty->caching = $bool;

      return;

    }

  }

}

ログイン後にコピー

3. config.ini 設定ファイル内にキャッシュとコンパイル フォルダーを作成します。

1

2

dir.compile    = ../app/compile

dir.cache    = ../app/cache

ログイン後にコピー

を追加する手順 3 と 4 については、zendfreamwork フレームワークを使用した Web サイトの構築に関する前のチュートリアルを参照してください

5. application.php ファイルに

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

/**

* 初始化smarty视图

*

*/

private function _initSmartyView()

{

    $view = new Zend_View_Smarty();

    $view->setBasePath($this->_pathConfig->dir->viewBase);

    $view->setScriptPath($this->_pathConfig->dir->viewBase."/scripts");

    $view->setCompilePath($this->_pathConfig->dir->compile);

    $view->setCachePath($this->_pathConfig->dir->cache);

    $smarty=$view->getEngine();

    $smarty->caching=false;

    $smarty->debugging = true;

    $smarty->compile_check = true;   

    $smarty->left_delimiter = "<{"; //定义标示符

    $smarty->right_delimiter = "}>";

    $registry = Zend_Registry::getInstance();

    $registry->set(&#39;smartyview&#39;,$smarty); //smarty对象

    $registry->set(&#39;sview&#39;,$view);         

}

ログイン後にコピー

を追加し、関数 init() に

1

$this->_initSmartyView();

ログイン後にコピー

を追加します。 . コントローラーを呼び出します

オブジェクトが登録されているので、次のように呼び出すことができます:

1

2

3

4

5

$view = Zend_Registry::getInstance()->get("smartyview");

//注意这是smarty对象,使用smarty的那些语法,比如 $view->assign("user","root");

$view = Zend_Registry::getInstance()->get("sview");

//这是zf的view对象,按zf中的那些方法用,不用改变。

//按这样,你如果要将以前写的代码改为用smaty,后台不用变了,只需要将视图文件改变就行了

ログイン後にコピー

この記事が、Zend Framework フレームワークに基づいた PHP プログラミングに役立つことを願っています。

Zend Framework Smarty 拡張機能の実装方法に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)