迅睿CMS框架是一款PHP8高性能·簡單易用的CMS開源開發(fā)框架,基于MIT開源許可協(xié)議發(fā)布,免費(fèi)且不限制商業(yè)使用,是免費(fèi)開源的產(chǎn)品,以萬端互聯(lián)為設(shè)計理念,支持的微信公眾號、小程序、APP客戶端、移動端網(wǎng)站、PC網(wǎng)站等多終端式管理系統(tǒng)。
聯(lián)系官方銷售客服
1835022288
028-61286886
鉤子里面引用類,該如何去引用,我要用save方法,如何去使用?$this不能直接用要引用類才行
鉤子是一個獨(dú)立的程序體,不能有this,需要做如下替換
$this模型類的話,全局是:\Phpcmf\Service::M()
$this模板類的話,全局是:\Phpcmf\Service::V()
$this控制器的話,全局是:\Phpcmf\Service::C()
回復(fù)迅??蚣軇?chuàng)始人那要用save方法該怎么用呢
this改為 \Phpcmf\Service::C()
\Phpcmf\Service::C()->model = 'work'; \Phpcmf\Service::C()->content_model = \Phpcmf\Service::M('Content', \Phpcmf\Service::C()->model); if (!empty($old['id'])){ \Phpcmf\Service::C()->content_model->save($old['id'],$data,$old); }else{ \Phpcmf\Service::C()->content_model->save(0,$data,0); }
這樣嗎。這樣還是報錯
<?php defined('SYSTEMPATH') || exit('No direct script access allowed'); ?> CRITICAL - 2020-06-11 08:50:46 --> Cannot re-assign $this # http://work.cc/admin.php?s=work&c=home&m=edit&id=11 # #0 [internal function]: CodeIgniter\Debug\Exceptions->shutdownHandler() #1 {main} ERROR - 2020-06-11 08:51:33 --> 類文件:Fcms/Model/Work.php不存在
這個是錯誤日志
\Phpcmf\Service::C()->model = 'work'; \Phpcmf\Service::C()->content_model = \Phpcmf\Service::M('Content', \Phpcmf\Service::C()->model);
改成
\Phpcmf\Service::C()->_module_init("work");
回復(fù)迅??蚣軇?chuàng)始人
CRITICAL - 2020-06-11 09:32:17 --> Call to a member function save() on null # http://work.cc/admin.php?s=work&c=home&m=edit&id=11 # UPDATE `xxk_1_work` SET `url` = '/index.php?c=show&id=11' WHERE `id` = 11 #0 [internal function]: Phpcmf\Hooks::{closure}(Array, Array) #1 E:\phpstudy_pro\WWW\syywork\dayrui\System\Events\Events.php(188): call_user_func(Object(Closure), Array, Array) #2 E:\phpstudy_pro\WWW\syywork\dayrui\Fcms\Model\Content.php(349): CodeIgniter\Events\Events::trigger('module_content_...', Array, Array) #3 E:\phpstudy_pro\WWW\syywork\dayrui\Fcms\Core\Table.php(219): Phpcmf\Model\Content->save(11, Array, Array) #4 E:\phpstudy_pro\WWW\syywork\dayrui\Fcms\Control\Admin\Module.php(1192): Phpcmf\Table->_Save(11, Array, Array, Object(Closure), Object(Closure)) #5 E:\phpstudy_pro\WWW\syywork\dayrui\Fcms\Core\Table.php(338): Phpcmf\Admin\Module->_Save(11, Array, Array) #6 E:\phpstudy_pro\WWW\syywork\dayrui\Fcms\Control\Admin\Module.php(178): Phpcmf\Table->_Post(11, Array) #7 E:\phpstudy_pro\WWW\syywork\dayrui\App\Work\Controllers\Admin\Home.php(19): Phpcmf\Admin\Module->_Admin_Edit() #8 E:\phpstudy_pro\WWW\syywork\dayrui\System\CodeIgniter.php(914): Phpcmf\Controllers\Admin\Home->edit() #9 E:\phpstudy_pro\WWW\syywork\dayrui\System\CodeIgniter.php(400): CodeIgniter\CodeIgniter->runController(Object(Phpcmf\Controllers\Admin\Home)) #10 E:\phpstudy_pro\WWW\syywork\dayrui\System\CodeIgniter.php(308): CodeIgniter\CodeIgniter->handleRequest(NULL, Object(Config\Cache), false) #11 E:\phpstudy_pro\WWW\syywork\dayrui\Fcms\Init.php(337): CodeIgniter\CodeIgniter->run() #12 E:\phpstudy_pro\WWW\syywork\index.php(47): require('E:\\phpstudy_pro...') #13 E:\phpstudy_pro\WWW\syywork\admin.php(9): require('E:\\phpstudy_pro...') #14 {main}
報這個錯誤了
\Phpcmf\Hooks::on('module_content_after', function($data, $old) { if ($old[1]['state'] == 1){ $data[1]['updatetime'] = null; }else{ $data[1]['updatetime'] = strtotime(time()); } $t = \Phpcmf\Service::C()->_module_init("work"); if (!empty($old['id'])){ $t->save($old['id'],$data,$old); }else{ $t->save(0,$data,0); } });
$this->model = $catename[0]['mid']; $this->content_model = \Phpcmf\Service::M('Content', $this->model); $this->_module_init($this->model, SITE_ID, $this->module['share']); $this->content_model->save(0,$add,0)
這四句話要在鉤子里面用的話,應(yīng)該怎么改一下呢,就是數(shù)據(jù)保存這個方法save()
下面不變,只便我給你你的兩行,你自作聰明了
\Phpcmf\Hooks::on('module_content_after', function($data, $old) { if ($old[1]['state'] == 1){ $data[1]['updatetime'] = null; }else{ $data[1]['updatetime'] = strtotime(time()); } \Phpcmf\Service::C()->_module_init("work"); if (!empty($old['id'])){ \Phpcmf\Service::C()->content_model->save($old['id'],$data,$old); }else{ \Phpcmf\Service::C()->content_model->save(0,$data,0); } });
一直都是這樣,發(fā)布出去
回復(fù)@琉惗
這樣就死循環(huán)了,你這么做是干什么的,沒看懂你的程序意圖
我就要在發(fā)布內(nèi)容的時候,根據(jù)一個字段去給自動更新時間,如果那個字段狀態(tài)是1就讓更新時間為空,如果字段狀態(tài)為2那就讓時間為當(dāng)前時間
那你走的太遠(yuǎn)了,一句話sql就可以搞定
\Phpcmf\Hooks::on('module_content_after', function($data, $old) { \Phpcmf\Service::M()->table_site(MOD_DIR)->update($data[1]['id'], [ "主表字段" => "新值", ]) });
回復(fù)迅??蚣軇?chuàng)始人哦,那我要在鉤子里面用完整的save方法,應(yīng)該怎么用呢,還有我要判斷當(dāng)前用戶是不是超級管理員,這個怎么判斷呢?
鉤子里面不能寫save,寫了就是你上面的情況,無線死循環(huán)
if (in_array(1, \Phpcmf\Service::C->admin['roleid'])) {
是草雞管理員
}
\Phpcmf\Hooks::on('module_content_after', function($data, $old) { if ($data[1]['state'] == 1){ $date['time'] = ' '; }else{ $date['time'] = time(); } \Phpcmf\Service::M()->table(SITE_ID.'_work')->update($old['id'], ['updatetime' => $date['time']]); });
老大,這樣的話,只能是在更新的時候,把時間改了,如果添加的時候還是默認(rèn)有時間,我不想他默認(rèn)有時間,這個怎么做?
\Phpcmf\Hooks::on('module_content_after', function($data, $old) { if ($data[1]['state'] == 1){ $date['time'] = ' '; }else{ $date['time'] = time(); } \Phpcmf\Service::M()->table(SITE_ID.'_work')->update($data[1]['id'], ['updatetime' => $date['time']]); });
這樣就行了,新增、修改都執(zhí)行
哦,對哦,這個給我整蒙逼了,直接就
鉤子是一個獨(dú)立的程序體,不能有this,需要做如下替換
$this模型類的話,全局是:\Phpcmf\Service::M()
$this模板類的話,全局是:\Phpcmf\Service::V()
$this控制器的話,全局是:\Phpcmf\Service::C()
回復(fù)迅??蚣軇?chuàng)始人那要用save方法該怎么用呢
this改為 \Phpcmf\Service::C()
這樣嗎。這樣還是報錯
這個是錯誤日志
改成
回復(fù)迅??蚣軇?chuàng)始人
報這個錯誤了
這四句話要在鉤子里面用的話,應(yīng)該怎么改一下呢,就是數(shù)據(jù)保存這個方法save()
回復(fù)迅??蚣軇?chuàng)始人
下面不變,只便我給你你的兩行,你自作聰明了
回復(fù)迅??蚣軇?chuàng)始人
一直都是這樣,發(fā)布出去
回復(fù)@琉惗
這樣就死循環(huán)了,你這么做是干什么的,沒看懂你的程序意圖
回復(fù)迅??蚣軇?chuàng)始人
我就要在發(fā)布內(nèi)容的時候,根據(jù)一個字段去給自動更新時間,如果那個字段狀態(tài)是1就讓更新時間為空,如果字段狀態(tài)為2那就讓時間為當(dāng)前時間
那你走的太遠(yuǎn)了,一句話sql就可以搞定
回復(fù)迅??蚣軇?chuàng)始人哦,那我要在鉤子里面用完整的save方法,應(yīng)該怎么用呢,還有我要判斷當(dāng)前用戶是不是超級管理員,這個怎么判斷呢?
鉤子里面不能寫save,寫了就是你上面的情況,無線死循環(huán)
if (in_array(1, \Phpcmf\Service::C->admin['roleid'])) {
是草雞管理員
}
回復(fù)迅??蚣軇?chuàng)始人
老大,這樣的話,只能是在更新的時候,把時間改了,如果添加的時候還是默認(rèn)有時間,我不想他默認(rèn)有時間,這個怎么做?
這樣就行了,新增、修改都執(zhí)行
哦,對哦,這個給我整蒙逼了,直接就