㈠ 如何用thinkphp 構建一個簡單的項目
1、使用sftp協議進行上傳的操作:輸入用戶名和用戶密碼。
㈡ 如何讓nginx支持ThinkPHP框架
讓nginx支持ThinkPHP框架的做法:
1、打開nginx的配置文件,如果是想某個站點支持,請打開對應站點的配置文件
添加的代碼如下:
.........................................
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
location ~ .php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
㈢ thinkphp視圖模型怎麼創建
視圖模型
視圖定義
視圖通常是指資料庫的視圖,視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖並不在資料庫中以存儲的數據值集形式存在。行和列數據來自由定義視圖的查詢所引用的表,並且在引用視圖時動態生成。對其中所引用的基礎表來說,視圖的作用類似於篩選。定義視圖的篩選可以來自當前或其它資料庫的一個或多個表,或者其它視圖。分布式查詢也可用於定義使用多個異類源數據的視圖。如果有幾台不同的伺服器分別存儲組織中不同地區的數據,而您需要將這些伺服器上相似結構的數據組合起來,這種方式就很有用。
視圖在有些資料庫下面並不被支持,但是ThinkPHP模擬實現了資料庫的視圖,該功能可以用於多表聯合查詢。非常適合解決HAS_ONE 和 BELONGS_TO 類型的關聯查詢。
要定義視圖模型,只需要繼承ViewModel,然後設置viewFields屬性即可。例如下面的例子,我們定義了一個BlogView模型對象,其中包括了Blog模型的id、name、title和User模型的name,以及Category模型的title欄位,我們通過創建BlogView模型來快速讀取一個包含了User名稱和類別名稱的Blog記錄(集)。
class BlogViewModel extends ViewModel {
public $viewFields = array(
'Blog'=>array('id','name','title'),
'Category'=>array('title'=>'category_name', '_on'=>'Blog.category_id=Category.id'),
'User'=>array('name'=>'username', '_on'=>'Blog.user_id=User.id'),
);
}
我們來解釋一下定義的格式代表了什麼。
$viewFields 屬性表示視圖模型包含的欄位,每個元素定義了某個數據表或者模型的欄位。
例如:
'Blog'=>array('id','name','title');
表示BlogView視圖模型要包含Blog模型中的id、name和title欄位屬性,這個其實很容易理解,就和資料庫的視圖要包含某個數據表的欄位一樣。而Blog相當於是給Blog模型對應的數據表定義了一個別名。
默認情況下會根據定義的名稱自動獲取表名,如果希望指定數據表,可以使用:
'_table'=>"test_db.test_table"
如果希望給當前數據表定義另外的別名,可以使用
'_as'=>'myBlog'
BlogView視圖模式除了包含Blog模型之外,還包含了Category和User模型,下面的定義:
'Category'=>array('title'=>'category_name');
和上面類似,表示BlogView視圖模型還要包含Category模型的title欄位,因為視圖模型裡面已經存在了一個title欄位,所以我們通過
'title'=>'category_name'
把Category模型的title欄位映射為category_name欄位,如果有多個欄位,可以使用同樣的方式添加。可以通過_on來給視圖模型定義關聯查詢條件,例如:
'_on'=>'Blog.category_id=Category.id'
理解之後,User模型的定義方式同樣也就很容易理解了。
Blog.categoryId=Category.id AND Blog.userId=User.id
最後,我們把視圖模型的定義翻譯成SQL語句就更加容易理解視圖模型的原理了。假設我們不帶任何其他條件查詢全部的欄位,那麼查詢的SQL語句就是
Select
Blog.id as id,
Blog.name as name,
Blog.title as title,
Category.title as category_name,
User.name as username
from think_blog Blog JOIN think_category Category JOIN think_user User
where Blog.category_id=Category.id AND Blog.user_id=User.id
視圖模型的定義並不需要先單獨定義其中的模型類,系統會默認按照系統的規則進行數據表的定位。如果Blog模型並沒有定義,那麼系統會自動根據當前模型的表前綴和後綴來自動獲取對應的數據表。也就是說,如果我們並沒有定義Blog模型類,那麼上面的定義後,系統在進行視圖模型的操作的時候會根據Blog這個名稱和當前的表前綴設置(假設為Think_ )獲取到對應的數據表可能是think_blog。
ThinkPHP還可以支持視圖模型的JOIN類型定義,我們可以把上面的視圖定義改成:
public $viewFields = array(
'Blog'=>array('id','name','title','_type'=>'LEFT'),
'Category'=>array('title'=>'category_name','_on'=>'Category.id=Blog.category_id','_type'=>'RIGHT'),
'User'=>array('name'=>'username','_on'=>'User.id=Blog.user_id'),
);
需要注意的是,這里的_type定義對下一個表有效,因此要注意視圖模型的定義順序。Blog模型的
'_type'=>'LEFT'
針對的是下一個模型Category而言,通過上面的定義,我們在查詢的時候最終生成的SQL語句就變成:
Select
Blog.id as id,
Blog.name as name,
Blog.title as title,
Category.title as category_name,
User.name as username
from think_blog Blog LEFT JOIN think_category Category ON Blog.category_id=Category.id RIGHT JOIN think_user User ON Blog.user_id=User.id
我們可以在試圖模型裡面定義特殊的欄位,例如下面的例子定義了一個統計欄位
'Category'=>array('title'=>'category_name','COUNT(Blog.id)'=>'count','_on'=>'Category.id=Blog.category_id'),
3
視圖查詢
接下來,我們就可以和使用普通模型一樣對視圖模型進行操作了 。
$Model = D("BlogView");
$Model->field('id,name,title,category_name,username')->where('id>10')->order('id desc')->select();
看起來和普通的模型操作並沒有什麼大的區別,可以和使用普通模型一樣進行查詢。如果發現查詢的結果存在重復數據,還可以使用group方法來處理。
$Model->field('id,name,title,category_name,username')->order('id desc')->group('id')->select();
我們可以看到,即使不定義視圖模型,其實我們也可以通過方法來操作,但是顯然非常繁瑣。
$Model = D("Blog");
$Model->table(
'think_blog Blog,
think_category Category,
think_user User')
->field(
'Blog.id,Blog.name,
Blog.title,
Category.title as category_name,
User.name as username')
->order('Blog.id desc')
->where('Blog.category_id=Category.id AND Blog.user_id=User.id')
->select();
而定義了視圖模型之後,所有的欄位會進行自動處理,添加表別名和欄位別名,從而簡化了原來視圖的復雜查詢。如果不使用視圖模型,也可以用連貫操作的JOIN方法實現相同的功能。
㈣ 「thinkphp5.0」的安裝步驟是什麼
thinkphp框架是目前國內比較流行的PHP框架之一,不管是初學者還是老學員都能容易上手,快速,安全開發網站。具體安裝步驟如下:
㈤ editplus怎麼導入thinkphp框架
前段時間一直為TP尋找好用的在線編輯器而苦惱,經過多次嘗試與修改後,終於成功地將編輯器集成到Thinkphp里
而且可以用直接上傳和ajax兩種方式處理內容。為了給一些還沒能成功地集成fckeditor的同儕們一些啟發與幫助,
茲將我的經驗與體會描述如下:
應用目的:將FCKeditor編輯器集成到Thinkphp中,使用戶能夠在線像編輯Word一樣處理即將發表的文字與圖像。
應用軟體與環境:apache伺服器2.0以上版本,PHP版本5.0以上,mysql5.0以上;Thinkphp版本1.5或以上,Fckeditor版本2.x。
1、下載FCKeditor2.x版本,將解壓後的文件夾FCKeditor復制到ThinkPHP文件夾下的Vendor目錄下,以便符合THinkPHP的第三方類庫引入規則。
2、修改參數:
首先,用EditPlus等軟體打開FCKeditor目錄下的fckeditor_php5.php文件,找到第130行。出現內容如下:
publicfunction__construct($instanceName)
{$this->InstanceName=$instanceName;
$this->BasePath='';
$this->Width='900′;
$this->Height='400′;
$this->ToolbarSet='Default';
$this->Value='';
$this->Config=array();
}
publicfunction__construct($instanceName){$this->InstanceName=$instanceName;
$this->BasePath='/bm/ThinkPHP/Vendor/FCKeditor/';$this->Width='900′;$this->Height='400′;
$this->ToolbarSet='Default';$this->Value=」;
其中,最關鍵的就是將basepath設置好。
裡面填寫的就是fckeditor_php5.php文件相對於網站文檔根目錄(document root)的路徑。
其實這就是用以表徵FCKeditor編輯器相對根目錄的路徑。比如伺服器的文檔根目錄最下級是htdocs/或www/, 項目名為project,project項目文件夾下有Thinkphp系統文件包與項目文件包myapp。而且伺服器沒有對該項目設置虛擬主機的話, 此時的文檔根目錄仍是www/或htdocs/,那麼應該是$this->basePath='/project/ThinPHP/Vendor/FCKeditor/';
若是設置了虛擬主機,即將project變為虛擬的文檔根目錄,通過某一域名能夠直接訪問網站項目的話,那麼此時,$this->basePath='/ThinPHP/Vendor/FCKeditor/'; 其他的參數如寬度與高度可以填或不填,若填下的話就是編輯器的默認高與寬。InstanceName是編輯器所在標簽的id與name,此時不用理會。其他參數也不用理會。
其次,在下面找到config.php文件,打開它,找到30與34行。需要改寫的參數如下:$Config['Enabled'] = true ;$Config['UserFilesPath'] = ' ' ;
其中,第一個參數應該設為true.默認是true.第二個參數填寫的是上傳文件的路徑,比如要顯示的圖片等。
我們在project目錄下建立一個uploads文件夾,那麼$Config['UserFilesPath'] = '/project/uploads/';
路徑規則與上一個basepath一樣。要是project是虛擬文檔根目錄的話,那麼$Config['UserFilesPath'] =' /uploads/';
3、應用程序:
比如在myapp項目中Lib目錄下IndexAction.class.php控制器類中的index方法中,當訪問該程序時,輸出的模板網頁里有form表單, 要求用戶輸入一篇文章,那麼就可以用到編輯器.代碼示例如下,只顯示與fckeditor有關的代碼,其他代碼會略。
首先是伺服器程序:
publicfunctionindex()
{……//其他代碼
vendor(「FCKeditor.fckeditor」);//包含FCKeditor類庫,TP引入第三方類庫的系統方法,其路徑是相對於vendor目錄來說的。
$editor=newFCKeditor();//實例化FCKeditor對象
$editor->Width='980′;//設置編輯器實際需要的寬度。此項省略的話,會使用默認的寬度。
$editor->Height='400′;//設置編輯器實際需要的高度。此項省略的話,會使用默認的高度。
$this->Value=」;//設置編輯器初始值。也可以是修改數據時的設定值。可以置空。
$editor->InstanceName='comment';//設置編輯器所在表單內輸入標簽的id與name,即<input>標簽的id與name。此處假
//設為comment.此處不可省,也要保持唯一性。表單上傳到伺服器處理程序後,即可通過$_POST['comment']來讀取。
$html=$editor->Createhtml();//創建在線編輯器html代碼字元串,並賦值給字元串變數$html.
$this->assign('html',$html);//將$html的值賦給模板變數$html.在模板里通過{$html}可以直接引用。
…….//其他代碼,包括輸出模板。
}
其次是對應的html模板即index 文件。只需要在需要的地方插入編輯器即可,其他代碼與一般的<form>寫法一樣。
…….<!–其他html代碼 –>
<div>
<form id=」commentform」 name=」commentform」 action=」">//action里填寫表單處理程序,如'!-APP-!/Index/check'。
指的是IndexAction類下的check()方法來處理提交的表單數據。
<tablestyle=」width:100%;」>
<tr>
<tdstyle=」text-align:left;」>添加新評論:
</td>
</tr>
……//其他表單填寫項
<tr>
<td>{$html}</td>
</tr>
<tr>
<td><inputtype=」submit」value=」提交評論」>
</td>
</tr>
</table>
</form>
</div>
到這里, 已經可以用了。在表單處理程序里像通常處理表單元素那樣就行。但是,有的時候項目移植後,上傳的圖片等鏈接路徑會被錯誤編譯, 以致不能正確顯示圖片等東西。通常是雙引號解析錯誤,我還沒有解決。要想不出錯的話,可以採取ajax的方式處理表單數據。
不過在進行ajax處理之前,要先用一段js代碼將編輯器中的值賦給表單中name是instacename的值的表單元素。比如,本項示例中要用ajax對表單進行處理的話,index模板文件中必須在表單處理前運行的一段js代碼為:
…….//其他js代碼
var editor=FCKeditorAPI.GetInstance('comment');//comment是設置的instanceName值.
document.commentform.comment.value=editor.EditorDocument.body.innerHTML;//將編輯器中內容處理後的源代碼
//賦值給commentform表單的comment 屬性元素值。
……//其他js代碼
註:個人認為xajax比較不錯,只需要將主要精力花在後台程序上。我也是用xajax進行數據處理的。前台代碼很簡單。
㈥ thinkphp怎麼部署在阿里雲的ubuntu上
這一時半會說不明吧吧~~現在伺服器上搭建 apache+php+mysql環境 或者nginx+php+mysql環境 然後直接再直接把thinkphp的代碼放到指定的www目錄下就行了。關鍵那個搭建環境步驟比較多 我以前寫過這個環境在cenotos上搭建的步驟~~~博客上寫的
㈦ thinkphp怎麼部署到伺服器
直接上傳,前提是伺服器上必須有環境
㈧ 怎麼在PhpStorm之類的IDE中開發thinkphp應用
你是說做個簡單的項目嗎?
首先你得安裝配置好伺服器。現在網上有很多集成包,比如wampserver。安裝完後裡面有很多伺服器,一般用Apache。
現在打開phpstorm,如果你會thinkPHP之類的框架,將他的模板復制到你的打開目錄下
像我的打開入徑是
㈨ php項目如何部署在伺服器上
一、阿里ECS伺服器配置
1.因為線上已經有幾個站點了.所以要配置ngnix多站點
2.阿里雲ecs目錄結構,ngxin 在/etc/nginx/目錄下,配置的地方主要是nginx.config文件。或者在conf.d新建一個配置文件然後在include到nginx.config文件中
㈩ php manager for iis 7怎麼部署thinkphp
你下載的是一個類似於asp的鏈接文件,而不是你原本的文件!需要在伺服器端執行後才能到達正確的下載地址,所以最好點擊進入網頁獲得正確的下載地址例如後綴類似於rar的,再使用下載地址,如果不能獲取,就可能是伺服器出了問題。無法訪問了PHP是一種伺服器端HTML-嵌入式腳本描述語言。 其最強大和最重要的特徵是其資料庫集成層,使用它完成一個含有資料庫功能的網頁是不可置信的簡單。在HTML文件中, PHP腳本程序(語法類似於Perl或者c語言)可以使用特別的PHP標簽進行引用, 這樣網頁製作者也不必完全依賴HTML生成網頁了。由於PHP是在伺服器端執行的, 客戶端是看不到PHP代碼的。 PHP可以完成任何CGI腳本可以完成的任務,但它的功能的發揮取決於它和各種資料庫的兼容性。 PHP除了可以使用HTTP進行通信,也可以使用IMAP, SNMP, NNTP, POP3協議。
建議你去後盾人那學習,最近他們在搞實訓班培訓的活動