[本文轉自:夢溪筆記]
Joomla 是一個優秀的CMS系統,她可以讓你快速的完成一個網站的建設,她提供組件,模組,模板能夠滿足你大部分的網站需求。而組件在其中舉足輕重。
一、基本知識
元件(component ) 用來顯示頁面的主要資料。 Joomla的元件採用的是MVC架構設計。 當一個頁面請求產生時,其URL中可能包括task, view, layout等資訊。我在這裡就是要討論這個task和view. 一般URL中如果含有task就不會含有view, 這裡因為joomla認為task就完成一個特定的任務,比如說資料庫操作,有效性驗證等, 而view是負責顯示數據。通常的設計是task裡完成工作處理後,會呼叫setRedirect方法引導向一個view來顯示資料。其實在joomla裡,如果URL中沒有指定task的話,會預設task為display。
二、問題
在專案中,需要在頁面的meta資料裡包含Open graphic protocol 資料。 Open graphic protocol 用於提供社交網路要分享的資料描述。 如果你的頁面是透過task來完成的,然後在task裡透過setRedirect根據資料跳到不同的view進行授權驗證, 然後驗證透過後顯示資料頁面的話,你可能會遇到這種問題:你需要分享這個頁面,你在這個頁面的meta數據裡添加了Open graphic protocol 數據,你希望分享到facebook, google+等社交網站時,你會發現在分享頁面顯示的數據和圖片並不是你想要顯示頁面的數據。
三、解決方案
上面的問題是因為Open graphic protocol 數據獲取並不支持跳轉,如果遇到跳轉,一般都會去網站首頁拾取數據,而這並不是我們想要的。引起這個問題就是setRedirect。 setRedirect的原則是傳送給瀏覽裡的HTML頭中包含了跳躍指令。而解決上面的問題的方法是不使用setRedirect, 而是使用display. 每個JControllerLegacy都有一個display方法,你只要設定input裡的view, layout, 以及其他你要傳遞過去的數據,然後調用display方法就可。
下面是範例程式碼:
/** * 内部跳转,用于代替setRedirect. 为什么要这样子做呢? * 因为 setRedirect他会发送一个http头到浏览器,让浏览 * 进行跳转,这样一来就多了一个网络请问, 这是其一。最 * 为主要的是setRedirect在某些不支持浏览器redirect的情况 * 下达不到效果,例如:open graphic protocal * * @param type $view 要显示的view * @param type $layout 要显示的layout, 默认为NULL */ protected function internalRedirect($view, $layout=null){ $this->input->set("view", $view); $this->input->set("layout", $layout); return $this->display(); } public function checkAvailable(){ //其他的业务代码 $this->input->set('tmpl', 'doexam'); return $this->internalRedirect("doexam", $layout); }
上面的程式碼是寫在你的Controller裡的。函數internalRedirect透過設定$input(這個input是指url的輸入參數) 中的view, layout,然後直接呼叫JControllerLegecy的display方法來顯示頁面。
在checkAvailable方法中,在呼叫internalRedirect之前,也設定了其他 view所需的參數。
夢溪的一個朋友說他在做他的一個網站 時遇到了這樣的問題,我們討論並分析了Joomla的實現代碼,發現其實這個解決方案挺容易, 只要你熟悉Joomla組件開發。如果你有問題,可以找我一起交流
希望本文能解決你所遇到的問題。
以上就介紹了Joomla中的Task 和view 深入學習,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

近期不少的win11用户们反映关机的时候提示taskhostwindow任务宿主正在执行关闭任务,那么这是怎么回事?用户们可以进入到本地注册表编辑器下的Desktop文件夹,然后在右边的窗口中选择AutoEndTasks来进行设置就可以了。下面就让本站来为用户们来仔细的介绍一下关机出现这个问题的解决方法吧。windows11关机提示taskhostwindow任务宿主正在执行关闭任务的解决方法1、使用组合键win键+r键,输入“regedit”,回车,如下图所示。2、寻找[HKEY

Laravel是目前最流行的PHP框架之一,其强大的视图生成能力是让人印象深刻的一点。视图是Web应用程序中展示给用户的页面或视觉元素,其中包含HTML、CSS和JavaScript等代码。LaravelView允许开发者使用结构化的模板语言来构建网页,同时通过控制器和路由生成相应的视图。在本文中,我们将探讨如何使用LaravelView生成视图。一、什

Golang是一种并发性高、可靠性强的编程语言,近年来在Web开发中备受关注。Joomla是一种开源的内容管理系统,具有良好的模块化、易用性等特点。本文以Golang为主要开发语言,以Joomla为基础框架,介绍了一种基于Joomla的Web应用程序开发方法。一、Joomla简介Joomla是一种基于PHP开发的开源CMS系统,具有许多优点,比如易用性、灵活

Task在C#中是用于表示异步操作的对象,它位于System.Threading.Tasks命名空间中。Task提供了用于处理并发、异步操作的高级API,从而可以更轻松地在.NET应用程序中编写异步代码。

宝塔面板是一款基于Web的服务器管理软件,可以帮助用户在Linux服务器上快速部署网站,应用程序和数据库。其中,宝塔面板的一项关键功能是一键安装各种开源CMS,包括WordPress、Joomla、Drupal等。对于一个不熟悉服务器管理的网站管理员来说,手动部署CMS是一项繁琐的任务。包括下载软件,解压缩、配置数据库,并将文件上传至服务器的过程。这些步骤都

你们都晓得假如要自己全新开发程序来搭建一个网站,成本是相当大的,并非所有个人和小微企业都能承受。好在现今网上有好多开源免费的建站程序,直接下载安装才能使用。这种开源程序既减少了建站门槛,又直接省去了一大截网站建设成本。为便捷初学建站者初步了解,明天益吾库就来简略介绍下最流行的一些网站建站程序。1、WordPress[下载]WordPress免费开源程序,WordPress可以搭建功能强悍的网路信息发布平台,但更多的是应用于个性化的博客。WordPress不仅做个人博客外,可以做企业站、门户站、商

C#Task用法,需要具体代码示例概述:Task是C#中一个非常常用的类型,它代表了一个可执行的操作,可以异步地执行并返回结果。在处理异步操作、并行处理和提高应用程序性能方面,Task发挥着重要的作用。本文将介绍Task的基本用法,并提供一些具体的代码示例。创建并使用一个Task在C#中,可以使用Task类来创建和使用一个异步任务。下面是一个创建并使用Ta

C#Task详解,需要具体代码示例引言:在C#多线程编程中,Task是一种常用的编程模型,用于实现异步操作。Task提供了一种简单的方式来处理并发任务,可以在多个线程上并行执行异步操作,并且可以方便地处理异常和返回值。本文将详细介绍C#Task的使用方法,并提供一些具体的代码示例。一、Task的创建和运行创建Task对象的方法C#中创建Task对象有多种


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具