| 插件名稱 | CMS建站系統(tǒng)大眾版 V4.1 |
| 插件作者 | 迅睿官方自營(yíng) |
| 最近更新 | 2026-03-31 10:25:30 |
| 增加文章AI審核和AI創(chuàng)作入口(需升級(jí)AI助手插件) |
如圖,“全部項(xiàng)目”列表是創(chuàng)建項(xiàng)目模塊后用戶中心自動(dòng)生成的列表,藍(lán)色劃圈的三個(gè)列表是準(zhǔn)備新創(chuàng)建的。

預(yù)想的效果是:
——競(jìng)標(biāo)中:競(jìng)標(biāo)中的項(xiàng)目,發(fā)布人仍然可以修改項(xiàng)目字段,接受競(jìng)標(biāo),并且同意接受某個(gè)競(jìng)標(biāo);
——進(jìn)行中:接受某個(gè)競(jìng)標(biāo)并付款給平臺(tái)后,項(xiàng)目狀態(tài)自動(dòng)或管理員手動(dòng)更改為“進(jìn)行中”,同時(shí)將中標(biāo)人和中標(biāo)金額傳遞到項(xiàng)目字段中。進(jìn)行中的項(xiàng)目發(fā)布人和中標(biāo)人雙方均可以看到,項(xiàng)目字段發(fā)布人不得再編輯項(xiàng)目字段(或者僅可以更新項(xiàng)目狀態(tài)字段),進(jìn)行中的項(xiàng)目雙方可以在項(xiàng)目編輯頁面進(jìn)行對(duì)話溝通;
——已完成:管理員或項(xiàng)目發(fā)布人將項(xiàng)目狀態(tài)更改為“已完成”后,該條項(xiàng)目就轉(zhuǎn)變?yōu)椤耙淹瓿伞表?xiàng)目,之后雙方均不得再對(duì)項(xiàng)目進(jìn)行任何編輯。
目前已經(jīng)實(shí)現(xiàn)的:
我是通過在用戶中心創(chuàng)建了三個(gè)數(shù)據(jù)控制器,分別對(duì)應(yīng)“競(jìng)標(biāo)中”“進(jìn)行中”和“已完成”,然后在where_list處用項(xiàng)目狀態(tài)字段對(duì)項(xiàng)目列表進(jìn)行了限定,這樣三個(gè)列表就能分別展現(xiàn)不同進(jìn)度的項(xiàng)目列表(如下圖)。同時(shí),對(duì)生成的post頁面進(jìn)行了修改,基本實(shí)現(xiàn)了對(duì)三個(gè)狀態(tài)項(xiàng)目的編輯或查看詳情功能。

我的疑問:
——我的上述方法是否符合系統(tǒng)邏輯,能否基于模塊自動(dòng)生成的Home控制器進(jìn)行加工,以達(dá)到上述效果?
——項(xiàng)目狀態(tài)如果自動(dòng)變更的話,是通過鉤子還是控制器完成?在控制器里是不是也能用鉤子?
沒有問題,where_list就是用于組合條件的寫法
還可以參考支付插件的控制器文件寫法:app/Pay/Controllers/Member/Paylog.php
// index public function index() { $tid = (int)\Phpcmf\Service::L('input')->get('tid'); $where = ['`uid`='.$this->uid]; switch ($tid) { case 1: // 收入 $where[] = '`value` > 0'; break; case -1: // 消費(fèi) $where[] = '`value` < 0'; break; default : // 全部 break; } \Phpcmf\Service::M()->set_where_list(implode(' AND ', $where)); list($tpl, $data) = $this->_List(['tid' => $tid]); // 初始化 $data['param']['tid'] = $data['param']['total'] = 0; // 列出類別 $my = []; $type = ['0' => '全部', '1' => '收入', '-1' => '消費(fèi)']; foreach ($type as $i => $t) { $data['param']['tid'] = $i; $my[$i] = [ 'name' => dr_lang($t), 'url' => dr_member_url('pay/paylog/index', $data['param']) ]; } \Phpcmf\Service::V()->assign([ 'tid' => $tid, 'type' => $my, ]); \Phpcmf\Service::V()->display('paylog_index.html'); }開源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
第二個(gè)問題,控制器或者鉤子都可以來操作的,都是判斷權(quán)限,變更相關(guān)參數(shù)。
控制器可以執(zhí)行鉤子,根據(jù)模塊內(nèi)容相關(guān)的那幾個(gè)鉤子來
回復(fù)@外聘專員-GOLANG工作室 好的,感謝解答。項(xiàng)目狀態(tài)如果自動(dòng)變更的話,是通過鉤子還是控制器完成呢?
回復(fù)@芝麻通 好的,學(xué)習(xí)了,謝謝