제거 모듈


16

처음 설치할 때 카테고리 속성을 작성하는 확장을 작성했습니다. 그러나 이제 확장을 비활성화 / 제거 할 때 "범주 관리"페이지에 오류 메시지가 나타납니다.

Magento connect를 통해 확장 기능을 비활성화하면 파일 만 삭제되고 데이터베이스에서 아무것도 삭제되지 않습니다.

따라서이 문제를 극복하기 위해 시스템 구성 섹션에서 다른 확장 설정과 함께 배치 할 수있는 데이터베이스 항목을 삭제하는 버튼을 제공 할 수 있습니다. 그리고 관리자가 해당 버튼을 클릭하면 모든 데이터베이스 항목이 확장명에 사용되는 파일과 함께 삭제되어야합니다.

위의 해결책이 효과가 있는지 알려주십시오. 또는 확장 프로그램을 제거하는 동안 데이터베이스에서 원치 않는 항목을 삭제하는 더 나은 솔루션이 있습니까?

답변:


5

shell/폴더 에있는 설치 제거 쉘 스크립트를 작성할 수 있습니다 . 해당 파일은 core_resourceEAV에서 파일, 디렉토리, 데이터베이스 테이블, 항목 및 속성을 제거 할 수 있습니다 .

다음과 같이 보일 것입니다.

<?php

include_once 'abstract.php';

class Namespace_Module_Uninstall extends Mage_Shell_Abstract {

    public function run() {
        $this->removeDirectories();
        $this->removeAttributes();
    }

    /**
     * Remove file system files here.
     */
    public function removeDirectories() {
        $file = new Varien_Io_File();

        $file->rmdir(BP . DS . 'app/code/local/My/', true);
        $file->rm(BP . DS . 'app/etc/modules/My_Module.xml');
    }

    /**
     * Remove any attributes here
     */
    public function removeAttributes() {
        $installer = $this->_getSetup();

        $installer->startSetup();

        // repeat this for any other attributes you wish to uninstall
        $installer->removeAttribute('catalog_product', 'your_attribute');

        $installer->endSetup();
    }

    /**
     * Return catalog/customer/core or whichever resource setup class you need
     *
     * @return Mage_Catalog_Model_Resource_Setup
     */
    protected function _getSetup() {
        return Mage::getResourceSingleton('catalog/setup', 'default_setup');
    }
}

$uninstall = new Namespace_Module_Uninstall();

$uninstall->run();

다음을 사용하여 명령 행에서 실행할 수 있습니다.

php shell/uninstall.php

완료되면 셸 파일 자체를 삭제할 수 있습니다.


6

해결책이 없습니다.

문제는 모듈을 제거한다는 것은 모듈을 삭제하는 것을 의미하지만, 삭제하면 더 이상 제거 할 수있는 것이 없습니다.

  1. 일부 확장 프로그램 공급자는 데이터베이스를 지우는 SQL 쿼리를 제공합니다.

  2. 해커 톤 중 하나에있는 한 그룹은 한때 제거 스크립트를 사용하는 magento 핵심 기능을 사용할 수있는 모듈을 작성했습니다 : https://github.com/magento-hackathon/MageTrashApp

불행히도 다른 모듈이 필요합니다.이 모듈을 사용하면 1로 갈 수 있습니다.


1

자체 파괴 파일을 만들 수 있다고 생각합니다. 나는 다음과 같은 것을 상상할 것이다.

사용자는 확장 구성 페이지에서 "확장 프로그램 제거 및 모든 데이터 삭제"를 클릭합니다 (물론 첫 번째 버튼 클릭 후 확인 메시지가 표시됨).

이제 기능을 위해 먼저 모든 모듈의 파일을 삭제할 수 있다면로를 삭제하십시오 unlink(__FILE__).

또 다른 아이디어는 약간 해킹이지만 실제로 설치 제거 스크립트 인 SQL 설치 스크립트를 동적으로 생성했다고 가정 해보십시오. 백엔드에 대한 조치는 모듈의 버전을 업데이트하고 제거 스크립트를 사용하여 sql 파일을 주입 한 후 다음 Mage로드에서 실행됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.