Nested Sets + CTreeView, CDropdownList, CListBox
Re: Nested Sets + CTreeView, CDropdownList, CListBox
Здравствуйте, вроде установил все как в примере (скачан с первой страницы поста), но при запуске возникает ошибка
PHP warning
include(CNestedSetBehavior.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory
Z:\home\localhost\www\yii\framework\YiiBase.php(418)
Подскажите, что сделал не так, что проверить.
Заранее благодарен, Андрей
PHP warning
include(CNestedSetBehavior.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory
Z:\home\localhost\www\yii\framework\YiiBase.php(418)
Подскажите, что сделал не так, что проверить.
Заранее благодарен, Андрей
Re: Nested Sets + CTreeView, CDropdownList, CListBox
Файл CNestedSetBehavior не найден (КО) - импорт прописан? файл есть?
Не исключено, что он потерял первую букву (или по другой причине ошибка.. т.к. описание было сделано довольно давно, а расширение дорабатывалось)
А лучше пользоваться https://github.com/yiiext - там всегда последние версии и актуальные доки для разработчика
Не исключено, что он потерял первую букву (или по другой причине ошибка.. т.к. описание было сделано довольно давно, а расширение дорабатывалось)
А лучше пользоваться https://github.com/yiiext - там всегда последние версии и актуальные доки для разработчика
...
Re: Nested Sets + CTreeView, CDropdownList, CListBox
А где прописать импорт (в примере про это ни слова нет)? Расширениями просто не пользовался никогда.
Re: Nested Sets + CTreeView, CDropdownList, CListBox
https://github.com/yiiext/nested-set-behavior - тут последняя версия... там же и readme имеется.
...
Re: Nested Sets + CTreeView, CDropdownList, CListBox
Подскажите, как использовать расширение nestedsetbehavior (https://github.com/yiiext/nested-set-behavior/)?
Прописал в модели
public function behaviors()
{
return array(
'NestedSetBehavior'=>array(
'class'=>'ext.yiiext.behaviors.model.trees.NestedSetBehavior',
'leftAttribute'=>'lft',
'rightAttribute'=>'rgt',
'levelAttribute'=>'level',
);
}
Следующая функция от меня (может с ошибкой)
public static function selectAllFromTree(){
NestedSetBehavior::roots();
}
а что прописать в views чтобы оно хоть что-то показало.
Заранее благодарен
Прописал в модели
public function behaviors()
{
return array(
'NestedSetBehavior'=>array(
'class'=>'ext.yiiext.behaviors.model.trees.NestedSetBehavior',
'leftAttribute'=>'lft',
'rightAttribute'=>'rgt',
'levelAttribute'=>'level',
);
}
Следующая функция от меня (может с ошибкой)
public static function selectAllFromTree(){
NestedSetBehavior::roots();
}
а что прописать в views чтобы оно хоть что-то показало.
Заранее благодарен
- timlar
- Сообщения: 1382
- Зарегистрирован: 2009.09.19, 17:49
- Откуда: Украина, Днепропетровск
- Контактная информация:
Re: Nested Sets + CTreeView, CDropdownList, CListBox
Там же есть readme файл, где все описано: https://github.com/yiiext/nested-set-be ... adme_ru.md
Twitter: @timlar_ua
-
- Сообщения: 40
- Зарегистрирован: 2012.06.04, 19:52
Re: Nested Sets + CTreeView, CDropdownList, CListBox
Помогите пожалуйста!
У меня такая же проблема как у Negredo, у меня не получается сохранить модель, т.к. подключил через бехейвиор Nested Sets. Ошибка такая:
You should not use CActiveRecord::save() method when NestedSetBehavior attached.
Пользователю Negredo помог совет с использованием saveNode(), но я не понял что это значит. Я знаю, что в NestedSetBehavior есть save() и saveNode(), я даже не успел их где-то задействовать, а просто попытался сохранить форму.
Может быть я пока просто не врубился в MVC. В поём понимании, модель в данном случае - это объект-запись, наделённая свойствами и методами для её изменения и сохранения. NestedSets подключаю в эту модель для перемещения её вместе с её детьми.
Помогите пожалуйста. Как сохранить форму?
У меня такая же проблема как у Negredo, у меня не получается сохранить модель, т.к. подключил через бехейвиор Nested Sets. Ошибка такая:
You should not use CActiveRecord::save() method when NestedSetBehavior attached.
Пользователю Negredo помог совет с использованием saveNode(), но я не понял что это значит. Я знаю, что в NestedSetBehavior есть save() и saveNode(), я даже не успел их где-то задействовать, а просто попытался сохранить форму.
Код: Выделить всё
public function actionCreate($id=false)
{
$model=new Catalog;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Catalog']))
{
$model->attributes=$_POST['Catalog'];
if($model->save()) echo 'СОХРАНЕНО';
}
$this->render('create',array(
'model'=>$model,
));
}
Помогите пожалуйста. Как сохранить форму?
-
- Сообщения: 40
- Зарегистрирован: 2012.06.04, 19:52
Re: Nested Sets + CTreeView, CDropdownList, CListBox
Спасибо, я разобрался.
Если кому-то пригодится, то если nested sets подключены, то стандартные методы сохранения/добавления не работают, даже не пытайтесь. Вместо этого нужно пользоваться neested`овыми методами добавления в базу (appendTo), сохранения (saveNode). Они запускают те же самые механизмы, что и родные, добавляя к ним свои внутренние. Вот и всё. Хитрить не нужно
Если кому-то пригодится, то если nested sets подключены, то стандартные методы сохранения/добавления не работают, даже не пытайтесь. Вместо этого нужно пользоваться neested`овыми методами добавления в базу (appendTo), сохранения (saveNode). Они запускают те же самые механизмы, что и родные, добавляя к ним свои внутренние. Вот и всё. Хитрить не нужно
Re: Nested Sets + CTreeView, CDropdownList, CListBox
Всем привет. Столкнулся с проблемой an19drey, делая все как написано в первом посте, наткнулся на ошибку о не существующем файле или директории. Следуя советам, скачал актуальный NestedSet https://github.com/yiiext/nested-set-behavior, установил, следуя инструкциям. Однако оказалось, что TreeViewTreebehavior совсем не контактирует с NestedSetBehavior, после нескольких раздумий добил его до такого вида:
Однако все-равно вылетает ошибка:
Кто сталкивался с данной проблемой? Какие пути решения существуют?
Код: Выделить всё
<?php
class TreeViewTreebehavior extends NestedSetBehavior
{
public function getTreeViewData($returnrootnode = true, $keyfield = null)
{
if($keyfield == null)
{
$keyfield = 'id';
}
// Fetch the flat tree
$rawtree = Sections::model()->findByPk(1);
//$this->getTree(true);
// Init variables needed for the array conversion
$tree = array();
$node =& $tree;
$position = array();
$lastitem = '';
$depth = $this->levelAttribute;
foreach($rawtree as $rawitem)
{
// If its a deeper item, then make it subitems of the current item
if ($rawitem->levelAttribute > $depth)
{
$position[] =& $node; //$lastitem;
$depth = $rawitem->levelAttribute;
$node =& $node[$lastitem]['children'];
}
// If its less deep item, then return to a level up
else
{
while ($rawitem->levelAttribute < $depth)
{
end($position);
$node =& $position[key($position)];
array_pop($position);
$depth = $node[key($node)]['node']->levelAttribute;
}
}
if(!$rawitem->hasChildNodes())
$rawitem->owner->name = '<a href="/category/'.$rawitem->owner->id.'">'.$rawitem->owner->name.'</a>';
else
$rawitem->owner->name = '<span>'.$rawitem->owner->name.'</span>';
// Add the item to the final array
$node[$rawitem->$keyfield]['node'] = $rawitem;
$node[$rawitem->$keyfield]['id'] = 'node'.$rawitem->owner->id;
$node[$rawitem->$keyfield]['text'] = $rawitem->owner->name;
// save the last items' name
$lastitem = $rawitem->$keyfield;
}
// we don't care about the root node
if (!$returnrootnode)
{
reset($tree);
$tree = $tree[key($tree)]['children'];
//array_shift($tree);
}
return $tree;
}
}
Код: Выделить всё
Внутренняя ошибка сервера
key() expects parameter 1 to be array, null given
В ходе обработки вашего запроса произошла внутренняя ошибка сервера. Вы можете сообщить об ошибке по адресу the webmaster.
Спасибо.
-
- Сообщения: 65
- Зарегистрирован: 2011.04.27, 21:39
Re: Nested Sets + CTreeView, CDropdownList, CListBox
а где увидеть рабочее решение?
Re: Nested Sets + CTreeView, CDropdownList, CListBox
писал как-то для свои целей, могу выложить
Агрегатор цен на услуги хостинга - https://hostcost.net
Re: Nested Sets + CTreeView, CDropdownList, CListBox
Все работает, кроме вставки кагории - вь1дает ошибку:
Error 500
Invalid argument supplied for foreach()
помогите
Error 500
Invalid argument supplied for foreach()
помогите