迅睿開源框架是一款PHP8高性能·簡單易用的PHP開源開發(fā)框架, 基于MIT開源許可協(xié)議發(fā)布,不限制商業(yè)使用,以多端互聯(lián)為設(shè)計理念, 支持的微信公眾號、小程序、APP客戶端、移動端網(wǎng)站、PC網(wǎng)站等多終端式管理系統(tǒng)。
業(yè)務(wù)經(jīng)理
微信掃描以上二維碼
028-61286886
技術(shù)咨詢
鉤子里面引用類,該如何去引用,我要用save方法,如何去使用?$this不能直接用要引用類才行
鉤子是一個獨立的程序體,不能有this,需要做如下替換
$this模型類的話,全局是:\Phpcmf\Service::M()
$this模板類的話,全局是:\Phpcmf\Service::V()
$this控制器的話,全局是:\Phpcmf\Service::C()
開源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
回復(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ù)迅睿框架創(chuàng)始人
我就要在發(fā)布內(nèi)容的時候,根據(jù)一個字段去給自動更新時間,如果那個字段狀態(tài)是1就讓更新時間為空,如果字段狀態(tài)為2那就讓時間為當(dāng)前時間
那你走的太遠了,一句話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']]); });
老大,這樣的話,只能是在更新的時候,把時間改了,如果添加的時候還是默認有時間,我不想他默認有時間,這個怎么做?
\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í)行
哦,對哦,這個給我整蒙逼了,直接就
鉤子是一個獨立的程序體,不能有this,需要做如下替換
$this模型類的話,全局是:\Phpcmf\Service::M()
$this模板類的話,全局是:\Phpcmf\Service::V()
$this控制器的話,全局是:\Phpcmf\Service::C()
開源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
回復(fù)迅??蚣軇?chuàng)始人那要用save方法該怎么用呢
this改為 \Phpcmf\Service::C()
開源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
\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");開源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
回復(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()
回復(fù)迅??蚣軇?chuàng)始人
下面不變,只便我給你你的兩行,你自作聰明了
開源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
回復(fù)迅??蚣軇?chuàng)始人
\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ù)@琉惗
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}這樣就死循環(huán)了,你這么做是干什么的,沒看懂你的程序意圖
開源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
回復(fù)迅睿框架創(chuàng)始人
我就要在發(fā)布內(nèi)容的時候,根據(jù)一個字段去給自動更新時間,如果那個字段狀態(tài)是1就讓更新時間為空,如果字段狀態(tài)為2那就讓時間為當(dāng)前時間
那你走的太遠了,一句話sql就可以搞定
\Phpcmf\Hooks::on('module_content_after', function($data, $old) { \Phpcmf\Service::M()->table_site(MOD_DIR)->update($data[1]['id'], [ "主表字段" => "新值", ]) });開源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
回復(fù)迅??蚣軇?chuàng)始人哦,那我要在鉤子里面用完整的save方法,應(yīng)該怎么用呢,還有我要判斷當(dāng)前用戶是不是超級管理員,這個怎么判斷呢?
鉤子里面不能寫save,寫了就是你上面的情況,無線死循環(huán)
if (in_array(1, \Phpcmf\Service::C->admin['roleid'])) {
是草雞管理員
}
開源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
回復(fù)迅睿框架創(chuàng)始人
\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']]); });老大,這樣的話,只能是在更新的時候,把時間改了,如果添加的時候還是默認有時間,我不想他默認有時間,這個怎么做?
\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í)行
開源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
哦,對哦,這個給我整蒙逼了,直接就