Вводит array в начале html-документа.

Различные вопросы по установке и настройке фреймворка, конфигурции веб-сервера и IDE.
Ответить
Danila-188
Сообщения: 19
Зарегистрирован: 2012.02.27, 00:57

Вводит array в начале html-документа.

Сообщение Danila-188 » 2012.02.27, 01:15

Приветствую всех.
Недавно начал изучать и не могу понять где ошибка у меня.
Версия - последняя.
main.php

Код: Выделить всё

    'components'=>array(

        'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                'monitor/'=>'monitor',
                'monitor/add'=>'monitor/add',
            ),

        ), 

Контролер MonitorController.php

Код: Выделить всё

    public function actionIndex()
    {
    $this->setPageTitle ('Мониторинг');
    $this->render('index',$params);
    }

    public function actionAdd()
    {
    $this->setPageTitle ('Добавить сервер');


        $model = new AddServer();
        if(isset($_POST['AddServer']))
        {

            $model->attributes=$_POST['AddServer'];

            if($model->validate())
            {
                // Good - Добавляем сервер.
...

            }
            else
            {
                // Bad
...

            }

        }
        else
        {
                $this->render('add',array('model'=>$model));
        }

    } 
Model AddServer.php

Код: Выделить всё

class AddServer extends CFormModel
{

    public $server_ip;
    public $server_port;
    public $server_desc;
    public $server_url;
    public $server_game;


    public function rules()
    {
**
    }

    public function rules_server_game()
    {

        return array_keys ($this->server_game());

    }

    public function server_game()
    {

        return array (
            'cssource'    =>    'Counter-Strike: Source',
        );

    }
 
Врубив логику, понимаю, что array появляется, когда $model = new AddServer();
site.com/monitor - все гут
site.com/monitor/add - появляется перед html-листингом array.

Никак не могу осилить из-за чего это происходит.
Так всё работает.

Аватара пользователя
andy_s
Сообщения: 127
Зарегистрирован: 2012.01.22, 13:15

Re: Вводит array в начале html-документа.

Сообщение andy_s » 2012.02.27, 02:35

Видимо, где-то есть конструкция echo <массив> (или вы сами передали массив туда, где ожидается строка). Смотреть нужно код представления, наверное :)

Danila-188
Сообщения: 19
Зарегистрирован: 2012.02.27, 00:57

Re: Вводит array в начале html-документа.

Сообщение Danila-188 » 2012.02.27, 03:04

Код: Выделить всё


<div class="form">
<?php echo CHtml::beginForm(); ?>
 
<?php echo CHtml::errorSummary($model); ?>
 



<div class="row">
Игра:
<br />
<i>
<?php echo CHtml::activeLabel($model,'server_game'); ?>
</i><br />
<?php echo CHtml::activeDropDownList($model,'server_game', $model->server_game()); ?>
</div>



<div class="row">
ip сервера:
<br />
<i>
<?php echo CHtml::activeLabel($model,'server_ip'); ?>
</i><br />
<?php echo CHtml::activeTextField($model,'server_ip'); ?>
</div>
 
<div class="row">
Порт сервера:
<br />
<i>
<?php echo CHtml::activeLabel($model,'server_port'); ?>
</i><br />
<?php echo CHtml::activeTextField($model,'server_port'); ?>
</div>

<div class="row">
Ссылка на сайт сервера:
<br />
<i>
<?php echo CHtml::activeLabel($model,'server_url'); ?>
</i><br />
<?php echo CHtml::activeTextField($model,'server_url'); ?>
</div>

<div class="row">
Описание сервера:
<br />
<i>
<?php echo CHtml::activeLabel($model,'server_desc'); ?>
</i><br />
<?php echo CHtml::activeTextField($model,'server_desc'); ?>
</div>
 
<div class="row submit">
<?php echo CHtml::submitButton('Добавить', array ('class'=>'button_add') ); ?>
</div>
 
<?php echo CHtml::endForm(); ?>
</div><!-- form -->
вот view
Посмотрел все контролеры и модели. Нигде нету echo.
Если сделать 2 раза
$model = new AddServer();
$model = new SaveServer();
то 2 раза напечатается array

esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: Вводит array в начале html-документа.

Сообщение esche » 2012.02.27, 18:10

print_r скорее.. Полагаю, в модели..
...

Danila-188
Сообщения: 19
Зарегистрирован: 2012.02.27, 00:57

Re: Вводит array в начале html-документа.

Сообщение Danila-188 » 2012.02.28, 06:47

Просмотрел все модели и контролеры.
echo / print_r / var_dump - отсутствуют (только в комментах).
Если у кого будет пару минут свободных - гляньте
http://woosd.ru/to_check.zip
вот архив с скриптами.

egorio
Сообщения: 11
Зарегистрирован: 2011.03.24, 13:05

Re: Вводит array в начале html-документа.

Сообщение egorio » 2012.02.28, 14:25

Файл YiiBase.php, строка 418:

Код: Выделить всё

echo self::$_includePaths; 
Но проблема не в этом, а в том, как вы используете фреймворк.

Одно из важнейших правил - не изменять файлы самого фреймворка. При необходимости их можно либо наследовать, либо "перекрыть" своим.

Файлы вашего приложения и файлы фреймворка желательно (читать: "необходимо") разместить в разных каталогах, а не слить все кучу.
Использование абсолютных путей тоже не гуд, есть относительные и псевдонимы.

Можно еще много написать, но думаю вам стоит, для начала, попробовать создать блог из руководства по Yii, это значительно облегчит вашу дальнейшую разработку.

Danila-188
Сообщения: 19
Зарегистрирован: 2012.02.27, 00:57

Re: Вводит array в начале html-документа.

Сообщение Danila-188 » 2012.02.28, 21:45

Спасибо.
Сами файлы я не менял.
Я лишь структуру сменил на ту, к которой привык.
Буду исправлять

Danila-188
Сообщения: 19
Зарегистрирован: 2012.02.27, 00:57

Re: Вводит array в начале html-документа.

Сообщение Danila-188 » 2012.02.29, 04:03

увидел.
да, мой косяк.
для отладки (уже не помню чего) включил эту строку...

Ответить