Xwab
Форумыnavigate_nextФреймворки на PHP

Yii: Relations
Сообщения
PaRaDokS

Доброго времени суток, проблема заключается в том что при добалении метода Relations к модели у меня перестают отображаться все страницы связанные с этой моделью. Браузер просто выдает пустую страницу, на которой вообще ничего нет, фактически даже html кода, просто пустой документ. помогите разобраться в чем дело:

Вот код самого метода:
public function relations() {
return array('fields' => array(self::HAS_MANY, 'CategoryFields', 'id_category')); }

Вот структура БД модели в которой идет связка:

**
 * This is the model class for table "category".
 *
 * The followings are the available columns in table 'category':
 * @property integer $id
 * @property string $title
 * @property string $description
 * @property integer $id_parent
 * @property integer $update_time
 * @property integer $ordering
 * @property string $paid
 * @property integer $price
 * @property integer $sales
 * @property integer $id_image
 */

Вот структура БД модели с которой связываемся:

/**
 * This is the model class for table "category_fields".
 *
 * The followings are the available columns in table 'category_fields':
 * @property integer $id
 * @property integer $id_category
 * @property string $name
 * @property string $description
 * @property string $fieldtype
 * @property integer $id_virtual_catalog
 * @property string $additional_options
 * @property string $default_value
 * @property integer $maybemany
 * @property string $css_class
 * @property integer $order_
 */

Версия Yii: 1.1.10

09 Июл 2012, 16:58
Akdmeh

Если ничего не выводит - значит где-то ошибка синтаксиса php.
Включи отображение всех ошибок и попытайся найти её.

09 Июл 2012, 17:01
manyrus

Имею смелость предположить, что ты сидишь на linux. Конечно, отображение ошибок везде можно отключить/включить и всё это специфично, но думаю, что у тебя linux  Надо просто включить отображение ошибок.

ini_set('display_errors','On');
error_reporting(E_ALL);

В начале index.php. Это решение костыльное, т.к. у yii, думаю, есть специальный инструмент для работы с ошибками, всё таки большой фреймворк.

09 Июл 2012, 19:49
Маньяк

manyrus, на сколько помню
define('YII_DEBUG', TRUE);
перед подключением yii.
Но если ошибка фатальная, то это естественно не поможет

09 Июл 2012, 19:54
Akdmeh

4, скорее всего это ошибка синтаксиса, поэтому и посоветовал сразу включить ошибки.
Дебаггер yii вряд ли отловит ошибку синтаксиса (я правда пока не проверял, сам только-только изучаю)

09 Июл 2012, 20:04
[Diwms]

В самый вверх index.php, после открывающего тега разумеется, добавьте это:

[php:1:cd45451d5b]
ini_set("display_errors","1");
ini_set("display_startup_errors","1");
ini_set('error_reporting', E_ALL);
[/php:1:cd45451d5b]

Связи прописаны в обеих классах?


В `CategoryFields` должно быть что-то вроде:

[php:1:cd45451d5b] public function relations()
{
return array('categories'=>array(self::HAS_MANY, 'Category', 'id'));
}
[/php:1:cd45451d5b]

А в `category`:


[php:1:cd45451d5b] public function relations()
{
return array('category'=>array(self::BELONGS_TO, 'CategoryFields', 'id_category'));
}
[/php:1:cd45451d5b]

Что то в этом роде. И да, все модели должны наследовать класс CActiveRecord.

10 Июл 2012, 0:19
Маньяк

Akdmeh, отловит, на то он и отладочный режим

10 Июл 2012, 4:34
[Diwms]

Маньяк, Не отловит, если ошибка возникнет до загрузки

10 Июл 2012, 13:07
Маньяк

[Diwms], ясень пень) и до загрузки не думаю что кто либо будет писать кучу кода, так что не велика потеря

10 Июл 2012, 16:49
PaRaDokS

Спасибо народ, что-то я забыл что на серваке у нас отключен показ ошибок =D

Вот что выдает apache:
Fatal error: Cannot redeclare Category::relations() in ..\models\Category.php on line 114

Я так понимаю проблема в полиморфизме, а точней в правах доступа к методу.

Кто раньше сталкивался с такой ошибкой? как ее исправить?

Я бы загуглил, но дело в том что доступ к инету сейчас с телефона, что крайне не удобно =(

11 Июл 2012, 12:27
Ответить на тему