상황 : 콘크리트 5 버전 5.6.3.1에 대한 패키지를 개발하고 있습니다.블록이 데이터베이스에서 삭제되지 않았습니다
문제 :
- 프론트 엔드 (모든 사용자가하는 것처럼)에서 이미 게시 된 블록을 삭제하면 DB 테이블의 해당 행이 삭제되지 않습니다.
- 게시하지 않고 블록을 삭제하면 작동합니다.
여기 내 컨트롤러
class PcShooterChShowSomeThingsBlockController extends Concrete5_Controller_Block_Content {
protected $btName = "Show Some Things";
protected $btTable = 'btPcShooterChShowSomeThings';
protected $btInterfaceWidth = 500;
protected $btInterfaceHeight = 400;
protected $btWrapperClass = 'ccm-ui';
//...
public $pkgHandle = 'pc_shooter_ch_show_some_things';
//...
/**
* --------------- Overrides ----------------------
*/
public function delete() {
$db = Loader::db();
//Log::addEntry('DELETE FROM ' . $this->btTable . ' WHERE bID = ' . $this->bID);
$db->Execute('DELETE FROM ' . $this->btTable . ' WHERE bID = ' . $this->bID);
parent::delete();
}
}
자체가 잘 작동 블록도 패키지입니다. 내 첫 패키지가 아니며 C5에서 권장하는대로 블록/패키지를 개발합니다.
내가 그 버그를 생각하기 시작,하지만 난 C5에 뭔가를 게시하기 전에, 내가 다른 C5 개발자로부터 듣고 관심이 있어요 ... 그것이 말하는 C5의 포럼에서
, 그 Concrete5_Controller_Block_Content
을 '무시 delete-method가 도움이됩니다.
나는 끝 대신 beginnig에서 parent::delete();
을 호출하려고했지만 차이점은 없습니다. ,
/**
* Automatically run when a block is deleted. This removes the special data
* from the block's specific database table. If a block needs to do more
* than this this method should be overridden.
* @return $void
*/
public function delete() {
if ($this->bID > 0) {
if ($this->btTable) {
$ni = new BlockRecord($this->btTable);
$ni->bID = $this->bID;
$ni->Load('bID=' . $this->bID);
$ni->delete();
}
}
}
UPDATE 1
캐시 설정의 인쇄 화면
을 그리고 :
UPDATE 부모는 Concrete5_Library_BlockController
에서 방법을 삭제 그냥 말해, 더 이상의 정보를 정기적으로 또는 코드가 필요한 경우 어쩌면 그것은 db.xml
<?xml version="1.0"?>
<schema version="0.3">
<table name="btPcShooterChShowSomeThings">
<field name="bID" type="I">
<key />
<unsigned />
</field>
<field name="desc_true" type="I2">
</field>
<field name="block_css_style" type="C" size="255">
</field>
<field name="block_css_id" type="C" size="255">
</field>
<field name="block_css_class" type="C" size="255">
</field>
<field name="title_css_class" type="C" size="255">
</field>
<field name="desc_css_class" type="C" size="255">
</field>
</table>
</schema>
, 도움이됩니다. 이것에 대한 몇 가지 팁을 얻게되어 기쁩니다.
업데이트 2
제거 /도 도움이되지 않는 패키지의 설치합니다. UPDATE 3
- 프론트 엔드 (모든 사용자가하는 것처럼)에서 이미 게시 된 블록을 삭제하면 DB 테이블의 해당 행이 을 삭제되지 않습니다
없이 삭제() 방법은도 myne도 발사되는 부모의
거기에 C5 개발자가 없습니까? CMS를 바꾸라고 말해주는 침묵의 방법입니까? –