Skip to main content

yii, recursive function to create category sub category hierarchy

Create this function in the category model file:
--------------------------------------------------------------------------------- 



<?php
public function get_category_hr($cat_id, $selected_cat_id, $level_string) {
        
       
        $select_str='';
       
        if(!$level_string)
              {
                  $level_string='';
              }
       
       
        if ($cat_arr = $this->findAll('category_parent_id=' . $cat_id)) {
           

            foreach ($cat_arr as $cat) {
               
                $select_str.="<option value={$cat->category_id}";
                if($selected_cat_id==$cat->category_id)
                    $select_str.= ' selected';
                $select_str.=">{$level_string}{$cat->category_name}</option>";
                                   
                    $select_str.= $this->get_category_hr($cat->category_id, $selected_cat_id, $level_string.'+');
                                       
               
            }
           
           
           
        }
        else
        {
            return false;
        }
       
        return $select_str;
       
    }
?>






 Call this function like this:
-------------------------------------------

    <select name='Categories[category_parent_id]'>

            <option value='0'>No Parent</option>

            <?php

                    echo $Categories::model()->get_category_hr(0, $model->category_parent_id, '');

            ?>

            </select>







That should be all.

Popular posts from this blog

Yii, return to previous url after login or logout

If you want to return to your previous url after login or logout try this : <?php $this -> redirect (Yii :: app () -> request -> urlReferrer ); ?> To set the return url to be the url that was before the login page or registeration page was called you can put following code in views/layouts/main.php file : <?php //this checks id the controller action is not 'login' then it keeps the current url in returnUrl if (CController :: getAction () -> id != 'login' ) { Yii :: app () -> user -> setReturnUrl (Yii :: app () -> request -> getUrl ()); } ?>

yii, Executing a SQL without calling a Model

yii, Executing a SQL without calling a Model <? $connection = Yii :: app () -> db ; $sql = "SELECT id,username FROM users" ; $command = $connection -> createCommand ( $sql ); $dataReader = $command -> query (); $rows = $dataReader -> readAll (); print_r ( $rows ); ?>