删除Magento中的网站无法删除商店和商店视图

时间:2015-02-11 06:48:51

标签: magento

我有一个从Mage_Adminhtml_System_StoreController扩展的控制器,下面是我覆盖的操作:

public function deleteWebsitePostAction()
    {
        $multiWebEnable = Mage::getStoreConfig('web/multi_web_general/multi_web');
        $itemId = $this->getRequest()->getParam('item_id');

        if (!$model = Mage::getModel('core/website')->load($itemId)) {
            $this->_getSession()->addError(Mage::helper('core')->__('Unable to proceed. Please, try again'));
            $this->_redirect('*/*/');
            return;
        }
        if (!$model->isCanDelete()) {
            $this->_getSession()->addError(Mage::helper('core')->__('This website cannot be deleted.'));
            $this->_redirect('*/*/editWebsite', array('website_id' => $model->getId()));
            return;
        }

        $this->_backupDatabase('*/*/editWebsite', array('website_id' => $itemId));

        try {
            $model->delete();

            if ($multiWebEnable) {
                $websiteCode = $model->getCode();
                $websiteDir = BP . DS . 'mpshop' . DS . $websiteCode;
                if (is_dir($websiteDir)) {
                    $objects = scandir($websiteDir);
                    foreach ($objects as $object) {
                        if ($object != "." && $object != "..") {
                            if (filetype($websiteDir . DS . $object) == "dir") {
                                rmdir($websiteDir . DS . $object);
                            } else {
                                unlink($websiteDir . DS . $object);
                            }
                        }
                    }
                    reset($objects);
                    rmdir($websiteDir);
                }
            }

            $this->_getSession()->addSuccess(Mage::helper('core')->__('The website has been deleted.'));
            $this->_redirect('*/*/');
            return;
        } catch (Mage_Core_Exception $e) {
            $this->_getSession()->addError($e->getMessage());
        } catch (Exception $e) {
            $this->_getSession()->addException($e, Mage::helper('core')->__('Unable to delete website. Please, try again later.'));
        }
        $this->_redirect('*/*/editWebsite', array('website_id' => $itemId));
    }

我试图在我的控制器中注释掉这个功能,但问题仍然存在。

我对此感到困惑。我需要知道为什么会发生这种情况,给我一些建议......谢谢

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

那么,

经过深入研究后,我发现core_website表与core_storecore_store_group之间缺少一个外键。

此处的解决方案是下载Magento数据库修复工具,可在Magento主页下载。

希望得到这个帮助。

答案 1 :(得分:0)

请注意,删除网站只能通过管理面板完成,这就是独立脚本具有此功能的原因。

(放在root / var文件夹中) 这将从独立文件中删除您的网站:

require_once( 'app/Mage.php' );

umask(0);
Mage::app( 'admin' );
function deleteWebsitePostAction()
{
    try 
    {
        $sWebsiteId = 'a';
        $oWebsite = Mage::getModel( 'core/website' )->load( $sWebsiteId );
        if( !empty( $oWebsite->getId() ) )
        {
            $oWebsite->delete();
        }
    } 
    catch( Exception $oException ) 
    {
        Mage::logException( $oException );
    }
}
deleteWebsitePostAction();

要在管理面板中实现此功能,请确保将正确的变量提交给控制器,在这种情况下,我选择了名称website_id,因此您的表单应该位于某处。

public function deleteWebsitePostAction()
{
    try 
    {
        $sWebsiteId = $this->getRequest()->getParam( 'website_id' );
        $sWebsiteId = 'a';
        $oWebsite = Mage::getModel( 'core/website' )->load( $sWebsiteId );
        if( !empty( $oWebsite->getId() ) )
        {
            $oWebsite->delete();
        }
        else
        {
            $this->_getSession()->addError( 'Unable to proceed. Please, try again' );
            $this->_redirect( '*/*/' );
            return;
        }
    } 
    catch( Exception $oException ) 
    {
        Mage::logException( $oException );
        $this->_getSession()->addError( 'Unable to delete website. Please, try again' );
    }
}

答案 2 :(得分:-1)

从管理员>停用您的缓存系统>缓存管理 刷新缓存并再次检查。 您还可以从缓存管理或[root] / var / cache

中删除缓存