⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 view.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
📖 第 1 页 / 共 2 页
字号:
		// If $model is null we use the default model		if (is_null($default)) {			$model = $this->_defaultModel;		} else {			$model = strtolower( $default );		}		// First check to make sure the model requested exists		if (isset( $this->_models[$model] ))		{			// Model exists, lets build the method name			$method = 'get'.ucfirst($property);			// Does the method exist?			if (method_exists($this->_models[$model], $method))			{				// The method exists, lets call it and return what we get                $result = $this->_models[$model]->$method();                return $result;			}		}		// degrade to JObject::get		$result = parent::get( $property, $default );		return $result;	}	/**	 * Method to get the model object	 *	 * @access	public	 * @param	string	$name	The name of the model (optional)	 * @return	mixed			JModel object	 */	function &getModel( $name = null )	{		if ($name === null) {			$name = $this->_defaultModel;		}		return $this->_models[strtolower( $name )];	}	/**	* Get the layout.	*	* @access public	* @return string The layout name	*/	function getLayout()	{		return $this->_layout;	}	/**	 * Method to get the view name	 *	 * The model name by default parsed using the classname, or it can be set	 * by passing a $config['name'] in the class constructor	 *	 * @access	public	 * @return	string The name of the model	 * @since	1.5	 */	function getName()	{		$name = $this->_name;		if (empty( $name ))		{			$r = null;			if (!preg_match('/View((view)*(.*(view)?.*))$/i', get_class($this), $r)) {				JError::raiseError (500, "JView::getName() : Cannot get or parse class name.");			}			if (strpos($r[3], "view"))			{				JError::raiseWarning('SOME_ERROR_CODE',"JView::getName() : Your classname contains the substring 'view'. ".											"This causes problems when extracting the classname from the name of your objects view. " .											"Avoid Object names with the substring 'view'.");			}			$name = strtolower( $r[3] );		}		return $name;	}	/**	 * Method to add a model to the view.  We support a multiple model single	 * view system by which models are referenced by classname.  A caveat to the	 * classname referencing is that any classname prepended by JModel will be	 * referenced by the name without JModel, eg. JModelCategory is just	 * Category.	 *	 * @access	public	 * @param	object	$model		The model to add to the view.	 * @param	boolean	$default	Is this the default model?	 * @return	object				The added model	 */	function &setModel( &$model, $default = false )	{		$name = strtolower($model->getName());		$this->_models[$name] = &$model;		if ($default) {			$this->_defaultModel = $name;		}		return $model;	}	/**	* Sets the layout name to use	*	* @access	public	* @param	string $template The template name.	* @return	string Previous value	* @since	1.5	*/	function setLayout($layout)	{		$previous		= $this->_layout;		$this->_layout = $layout;		return $previous;	}	/**	 * Allows a different extension for the layout files to be used	 *	 * @access	public	 * @param	string	The extension	 * @return	string	Previous value	 * @since	1.5	 */	function setLayoutExt( $value )	{		$previous	= $this->_layoutExt;		if ($value = preg_replace( '#[^A-Za-z0-9]#', '', trim( $value ) )) {			$this->_layoutExt = $value;		}		return $previous;	}	 /**     * Sets the _escape() callback.     *     * @param mixed $spec The callback for _escape() to use.     */    function setEscape($spec)    {        $this->_escape = $spec;    }	/**	 * Adds to the stack of view script paths in LIFO order.	 *	 * @param string|array The directory (-ies) to add.	 * @return void	 */	function addTemplatePath($path)	{		$this->_addPath('template', $path);	}	/**	 * Adds to the stack of helper script paths in LIFO order.	 *	 * @param string|array The directory (-ies) to add.	 * @return void	 */	function addHelperPath($path)	{		$this->_addPath('helper', $path);	}	/**	 * Load a template file -- first look in the templates folder for an override	 *	 * @access	public	 * @param string $tpl The name of the template source file ...	 * automatically searches the template paths and compiles as needed.	 * @return string The output of the the template script.	 */	function loadTemplate( $tpl = null)	{		global $mainframe, $option;		// clear prior output		$this->_output = null;		//create the template file name based on the layout		$file = isset($tpl) ? $this->_layout.'_'.$tpl : $this->_layout;		// clean the file name		$file = preg_replace('/[^A-Z0-9_\.-]/i', '', $file);		$tpl  = preg_replace('/[^A-Z0-9_\.-]/i', '', $tpl);		// load the template script		jimport('joomla.filesystem.path');		$filetofind	= $this->_createFileName('template', array('name' => $file));		$this->_template = JPath::find($this->_path['template'], $filetofind);		if ($this->_template != false)		{			// unset so as not to introduce into template scope			unset($tpl);			unset($file);			// never allow a 'this' property			if (isset($this->this)) {				unset($this->this);			}			// start capturing output into a buffer			ob_start();			// include the requested template filename in the local scope			// (this will execute the view logic).			include $this->_template;			// done with the requested template; get the buffer and			// clear it.			$this->_output = ob_get_contents();			ob_end_clean();			return $this->_output;		}		else {			return JError::raiseError( 500, 'Layout "' . $file . '" not found' );		}	}	/**	 * Load a helper file	 *	 * @access	public	 * @param string $tpl The name of the helper source file ...	 * automatically searches the helper paths and compiles as needed.	 * @return boolean Returns true if the file was loaded	 */	function loadHelper( $hlp = null)	{		// clean the file name		$file = preg_replace('/[^A-Z0-9_\.-]/i', '', $hlp);		// load the template script		jimport('joomla.filesystem.path');		$helper = JPath::find($this->_path['helper'], $this->_createFileName('helper', array('name' => $file)));		if ($helper != false)		{			// include the requested template filename in the local scope			include_once $helper;		}	}	/**	* Sets an entire array of search paths for templates or resources.	*	* @access protected	* @param string $type The type of path to set, typically 'template'.	* @param string|array $path The new set of search paths.  If null or	* false, resets to the current directory only.	*/	function _setPath($type, $path)	{		global $mainframe, $option;		// clear out the prior search dirs		$this->_path[$type] = array();		// actually add the user-specified directories		$this->_addPath($type, $path);		// always add the fallback directories as last resort		switch (strtolower($type))		{			case 'template':			{				// set the alternative template search dir				if (isset($mainframe))				{					$option = preg_replace('/[^A-Z0-9_\.-]/i', '', $option);					$fallback = JPATH_BASE.DS.'templates'.DS.$mainframe->getTemplate().DS.'html'.DS.$option.DS.$this->getName();					$this->_addPath('template', $fallback);				}			}	break;		}	}	/**	* Adds to the search path for templates and resources.	*	* @access protected	* @param string|array $path The directory or stream to search.	*/	function _addPath($type, $path)	{		// just force to array		settype($path, 'array');		// loop through the path directories		foreach ($path as $dir)		{			// no surrounding spaces allowed!			$dir = trim($dir);			// add trailing separators as needed			if (substr($dir, -1) != DIRECTORY_SEPARATOR) {				// directory				$dir .= DIRECTORY_SEPARATOR;			}			// add to the top of the search dirs			array_unshift($this->_path[$type], $dir);		}	}	/**	 * Create the filename for a resource	 *	 * @access private	 * @param string 	$type  The resource type to create the filename for	 * @param array 	$parts An associative array of filename information	 * @return string The filename	 * @since 1.5	 */	function _createFileName($type, $parts = array())	{		$filename = '';		switch($type)		{			case 'template' :				$filename = strtolower($parts['name']).'.'.$this->_layoutExt;				break;			default :				$filename = strtolower($parts['name']).'.php';				break;		}		return $filename;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -