проблема с php и шаблоном - PullRequest
0 голосов
/ 05 марта 2011

Php код:

    class build {

        function panel() {

    $dummy="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum velit ultricies orci pharetra elementum. In massa mauris, varius sed tempus a, iaculis sed erat. Ut sollicitudin tellus mollis arcu laoreet semper. Suspendisse ut felis odio. Aliquam auctor, tortor sit amet suscipit elementum, nunc ante dictum lectus, ac accumsan justo nunc sed velit. Sed sollicitudin varius tortor vitae varius. Aliquam interdum, nisl consectetur laoreet commodo, metus massa sagittis nisl, non venenatis lacus mi nec tortor. Ut malesuada auctor dolor, id pulvinar est malesuada sed. Aliquam sed posuere orci. Proin porttitor euismod condimentum. Integer suscipit nibh nec augue facilisis ut commodo nisi ornare. Nam sed mauris vitae justo convallis placerat. Curabitur viverra, ipsum id volutpat sollicitudin, mi nisi condimentum nulla, nec dapibus velit libero eget orci. Nam purus lectus, imperdiet pharetra pulvinar ac, sodales sit amet sem. Ut vel mollis ante. Vivamus consectetur varius risus eu hendrerit. Sed scelerisque euismod leo, quis accumsan justo venenatis eu. Ut risus lorem, aliquet id fermentum nec, auctor ut enim. Ut pretium elementum turpis vel dignissim.";


        $columns=mysql_query('SELECT * FROM `column` ORDER BY id');
        while($column=mysql_fetch_array($columns))
        {
            echo '<div class="column" id="column'.$column['id'].'" >';
            $items=mysql_query("SELECT * FROM widgets WHERE column_id='".$column['id']."' AND user='".$_COOKIE['id']."' ORDER BY sort_no");
            while($widget=mysql_fetch_array($items))
            {
                echo '
                <div class="dragbox" id="item'.$widget['id'].'">
                    <h2>'.$widget['title'].'</h2>
                        <div class="dragbox-content" ';
                if($widget['collapsed']==1)
                    echo 'style="display:none;" ';
                echo '>
                            '.$dummy.'
                        </div>
                </div>';
            }               
            echo '</div>';
        }

    }

    }


     $build_panel = new build(); 

и положить в шаблон:

              $file = str_replace('{main_panel_window}', $build_panel, $file);

Ошибка: объект построения класса не может быть преобразован в строку в .... в строке 47

как решить проблему?

Ответы [ 4 ]

0 голосов
/ 05 марта 2011

Вы не можете str_replace() так, как написан этот код. Я думаю, что вы собираетесь работать с выводом $build_panel->panel(), но функция выводит строки напрямую, а не создает вывод шаблона и возвращает его в виде строки.

Итак, либо используйте wrap panel() в некоторой выходной буферизации , либо объедините его и верните строку.

0 голосов
/ 05 марта 2011

Проблема только в том, что говорит об ошибке: вы пытаетесь использовать объект build как строку в вызове str_replace.

Возможно, вам нужно преобразование строки , или, возможно, вам нужно переосмыслить, почему вы передаете объект build в str_replace.

Если вы хотели, чтобы panel() возвратил строку, то заставьте ее возвращать строку вместо echo напрямую, а затем напишите:

$file = str_replace('{main_panel_window}', $build_panel.panel(), $file);
0 голосов
/ 05 марта 2011

Я думаю, правильный код:

class build {

    function panel()
    {
        $dummy="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum velit ultricies orci pharetra elementum. In massa mauris, varius sed tempus a, iaculis sed erat. Ut sollicitudin tellus mollis arcu laoreet semper. Suspendisse ut felis odio. Aliquam auctor, tortor sit amet suscipit elementum, nunc ante dictum lectus, ac accumsan justo nunc sed velit. Sed sollicitudin varius tortor vitae varius. Aliquam interdum, nisl consectetur laoreet commodo, metus massa sagittis nisl, non venenatis lacus mi nec tortor. Ut malesuada auctor dolor, id pulvinar est malesuada sed. Aliquam sed posuere orci. Proin porttitor euismod condimentum. Integer suscipit nibh nec augue facilisis ut commodo nisi ornare. Nam sed mauris vitae justo convallis placerat. Curabitur viverra, ipsum id volutpat sollicitudin, mi nisi condimentum nulla, nec dapibus velit libero eget orci. Nam purus lectus, imperdiet pharetra pulvinar ac, sodales sit amet sem. Ut vel mollis ante. Vivamus consectetur varius risus eu hendrerit. Sed scelerisque euismod leo, quis accumsan justo venenatis eu. Ut risus lorem, aliquet id fermentum nec, auctor ut enim. Ut pretium elementum turpis vel dignissim.";
        $return="";

        $columns=mysql_query('SELECT * FROM `column` ORDER BY id');
        while($column=mysql_fetch_array($columns))
        {
            $return .= '<div class="column" id="column'.$column['id'].'" >';
            $items=mysql_query("SELECT * FROM widgets WHERE column_id='".$column['id']."' AND user='".$_COOKIE['id']."' ORDER BY sort_no");
            while($widget=mysql_fetch_array($items))
            {
                $return .= '
                <div class="dragbox" id="item'.$widget['id'].'">
                    <h2>'.$widget['title'].'</h2>
                        <div class="dragbox-content" ';
                if($widget['collapsed']==1)
                    $return .= 'style="display:none;" ';
                $return.= '>
                            '.$dummy.'
                        </div>
                </div>';
            }               
            $return .= '</div>';
        }
        // return the value
        return $return;
    }

}

и в вашем файле шаблона:

$build_panel = new build(); 
$file = str_replace('{main_panel_window}', $build_panel->panel(), $file);
0 голосов
/ 05 марта 2011

Изменить

 $file = str_replace('{main_panel_window}', $build_panel, $file);

на

 $file = str_replace('{main_panel_window}', $build_panel.panel(), $file);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...