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, 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 ); ?>

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 ()); } ?>