0

Prestashop 1.4 用のモジュールを構築しようとしています。完全なカテゴリとサブカテゴリのリストを取得して表示する必要がありますが、いくつかの問題が見つかりました。

これは私のモジュールロジックです:

class HyperFeed extends Module {

 function __construct(){ blablabla } 

 public function install(){ blablabla } 

public function _getCategories(){

    $version_mask = explode('.', _PS_VERSION_, 3);
    if ($version_mask[1]<5){$id_category=1;}else{$id_category=0;}       

    function getCategories($id_category){

        $sql = 'SELECT '._DB_PREFIX_.'category.id_category,name,'._DB_PREFIX_.'category.level_depth,'._DB_PREFIX_.'category.id_parent FROM '._DB_PREFIX_.'category
        INNER JOIN '._DB_PREFIX_.'category_lang ON '._DB_PREFIX_.'category_lang.id_category = '._DB_PREFIX_.'category.id_category
         WHERE id_parent = '.$id_category.' AND id_lang = 3';

        $contentTable = '<table>';
        if ($results = Db::getInstance()->ExecuteS($sql)){
            foreach ($results as $row){


                $contentTable .= '   
                <tr>
                    <td width="3%"><input type="checkbox" name="footerBox[]" class="cmsBox" id="1_1" value="1_1"></td>
                    <td width="3%">'.$row['id_category'].'</td>
                    <td width="94%"><img style="vertical-align:middle;" src="../img/admin/lv1.gif" alt=""> &nbsp;
                    <label for="1_1" class="t"><b>'.$row['name'].'</b></label></td>
                </tr>';


                getCategories($row['id_category']);                      

            }
        }
        $contentTable .=  '</table>';


    }

    getCategories(1);
    $this->_html .= $contentTable;

} 

 public function getContent(){

$this->_html .='<form>blablabla';

$this->_getCategories();

$this->_html .='blablabla</form>';

}
    return $this->_html;
    }

私が得るのは「未定義の変数: contentTable」だけです。何が間違っていますか??

前もって感謝します

4

2 に答える 2

1

あなたは、ではなく、$contentTable内で定義されます。getCategories()_getCategories()

したがって、次の行では、定義されていないと見なされます。

getCategories(1);
$this->_html .= $contentTable;

次のことを試すことができます。

探す:

$contentTable .=  '</table>';

と置換する:

$contentTable .=  '</table>';
return $contentTable;

探す:

getCategories(1);
$this->_html .= $contentTable;

と置換する:

$contentTable = getCategories(1);
$this->_html .= $contentTable;

これにより、getCategories()関数から変数を_getCategories()返し、割り当てることにより、関数内で変数を適切に定義する必要があります。$contentTable

于 2013-03-06T16:09:26.183 に答える
0

私は何か他のものを見つけました

public static function getCategoryTree($id_product,$id_lang){
                $root = Category::getRootCategory();
                $selected_cat = Product::getProductCategoriesFull($id_product, $id_lang);
                $tab_root = array('id_category' => $root->id, 'name' => $root->name);
                $helper = new Helper();
                $category_tree = $helper->renderCategoryTree($tab_root, $selected_cat, 'categoryBox', false, true, array(), false, true);
                return $category_tree;
            }

$this->getCategoryTree(null,$id_lang); prestashop のバックオフィス アソシエート タブとしてカテゴリ ツリーがあります。null を $id_product に置き換えると、製品カテゴリがチェックされます。英語が下手で申し訳ありませんが、私はフランス人です

于 2014-06-18T08:20:26.813 に答える