Подскажите новичку, как обратится к createUrl из вида

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Данил
Сообщения: 13
Зарегистрирован: 2013.06.10, 12:20

Подскажите новичку, как обратится к createUrl из вида

Сообщение Данил »

Есть вид

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

<h3>Список категорий</h3>
<?php 
$level=0;
foreach($categories as $n=>$category)
{
    if($category->level==$level)
        echo CHtml::closeTag('li')."\n";
    else if($category->level>$level)
        echo CHtml::openTag('ul')."\n";
    else
    {
        echo CHtml::closeTag('li')."\n";

        for($i=$level-$category->level;$i;$i--)
        {
            echo CHtml::closeTag('ul')."\n";
            echo CHtml::closeTag('li')."\n";
        }
    }

    echo CHtml::openTag('li');
    //$url=$this->createUrl('category/');
    echo CHtml::link($category->title, "category/".$category->title);
    $level=$category->level;
}

for($i=$level;$i;$i--)
{
    echo CHtml::closeTag('li')."\n";
    echo CHtml::closeTag('ul')."\n";
}
?>



при попытке сделать так $url=$this->createUrl('category/');
получаю эксепшн, хотя в документации к createUrl написано, что $this - экземпляр контроллера, и из вида через $this я получаю доступ к контроллеру. Что я делаю не так? через Yii::app()- тоже не работает. А в контроллере создавать url не хотелось бы, в виду того, что я не знаю как по другому вывести категории и подкатегории в виде. Сделать в контроллере функцию, в ней обращаться к createUrl как вариант, но правильно ли это? Посоветуйте что нибудь, если не трудно, спасибо.
Данил
Сообщения: 13
Зарегистрирован: 2013.06.10, 12:20

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение Данил »

Всем спасибо, уже разорался. Из вида можно обращаться так Yii::app()->createUrl(), может кому поможет...
Аватара пользователя
howard
Сообщения: 528
Зарегистрирован: 2012.11.16, 18:55
Откуда: Україна, Вінниця

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение howard »

$this
Агрегатор цен на услуги хостинга - https://hostcost.net
vladikamira
Сообщения: 92
Зарегистрирован: 2013.01.11, 23:13

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение vladikamira »

Раз уж пошла такая пьянка, то Yii::app()-> и $this одно и тоже ? :roll:
Skiller
Сообщения: 627
Зарегистрирован: 2011.11.27, 00:21

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение Skiller »

нет, $this- контроллер, а Yii::app() - приложение. В зависимости от контекста путь будет строится либо от base-url либо от контроллера.
vladikamira
Сообщения: 92
Зарегистрирован: 2013.01.11, 23:13

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение vladikamira »

Skiller писал(а):нет, $this- контроллер, а Yii::app() - приложение. В зависимости от контекста путь будет строится либо от base-url либо от контроллера.
а в каком случае с модулем ?
Skiller
Сообщения: 627
Зарегистрирован: 2011.11.27, 00:21

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение Skiller »

если контроллер в модуле, то соответственно модуль тоже включается в url.
Данил
Сообщения: 13
Зарегистрирован: 2013.06.10, 12:20

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение Данил »

Еще один вопрос, не хочу создавать тему, и так нафлудил)). Не могу разобраться с подкатегориями, вернее не соображу как реализовать это логически. К примеру. Есть в сайдбаре список категорий.
category1
category2
etc..
у каждой категории есть подкатегории.
category1
subcategory
category2
subcategory2
итд.
и родительские и дочерние каты имеют свои посты.
как реализовать это в урлах.
то есть я перешел по url category/post1
все хорошо.
но вот мне надо перейти в category/subcategory/post1
то есть нужно что бы в урлах было видно, что одно вкладывается в другое. Что сделать? Создавать еще один контроллер\действие? а если уровень вложенности будет глубже? В какую сторону копать?
На данный момент у меня вложенные списки категори
Данил
Сообщения: 13
Зарегистрирован: 2013.06.10, 12:20

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение Данил »

й формируются таким видом

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

<h3>Список категорий</h3>
<?php 
$level=0;
foreach($categories as $n=>$category)
{
    if($category->level==$level)
        echo CHtml::closeTag('li')."\n";
    else if($category->level>$level)
        echo CHtml::openTag('ul')."\n";
    else
    {
        echo CHtml::closeTag('li')."\n";

        for($i=$level-$category->level;$i;$i--)
        {
            echo CHtml::closeTag('ul')."\n";
            echo CHtml::closeTag('li')."\n";
        }
    }

    echo CHtml::openTag('li');
   
    echo CHtml::link($category->title, Yii::app()->createUrl('post/category', array('id'=>$category->title)));
    $level=$category->level;
}

for($i=$level;$i;$i--)
{
    echo CHtml::closeTag('li')."\n";
    echo CHtml::closeTag('ul')."\n";
}
?>



то есть вложенность видно только в сайдбаре визуально...
Данил
Сообщения: 13
Зарегистрирован: 2013.06.10, 12:20

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение Данил »

howard писал(а):$this
к сожалению, как я понял, из вида напрямую через this не получится.
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение futbolim »

Данил писал(а):
howard писал(а):$this
к сожалению, как я понял, из вида напрямую через this не получится.
К сожалению, Вы неправильно поняли
Данил
Сообщения: 13
Зарегистрирован: 2013.06.10, 12:20

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение Данил »

futbolim писал(а):
Данил писал(а):
howard писал(а):$this
к сожалению, как я понял, из вида напрямую через this не получится.
К сожалению, Вы неправильно поняли
А можно ссылку,где показано, что так можно? просто у меня не получилось.
Аватара пользователя
howard
Сообщения: 528
Зарегистрирован: 2012.11.16, 18:55
Откуда: Україна, Вінниця

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение howard »

ну почему же так лень доки читать!? http://www.yiiframework.com/doc/guide/1 ... .url#sec-2, покажите как вы формируете юрл
Агрегатор цен на услуги хостинга - https://hostcost.net
Данил
Сообщения: 13
Зарегистрирован: 2013.06.10, 12:20

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение Данил »

howard писал(а):ну почему же так лень доки читать!? http://www.yiiframework.com/doc/guide/1 ... .url#sec-2
я читал эту страницу несколько раз. В частности раздел про createUrl.
$this->createUrl('post/category', array('id'=>$category->title); ИЗ ВИДА вызывает вот такую ошибку. Решил проблему через Yii::app()->createUrl('post/category', array('id'=>$category->title) пускай и абсолютный адрес, но работает. Зачем говорить про лень? Может, вот именно, если лень понять суть вопроса, то и отвечать не стоит? Ответит кто нибудь другой, кому не трудно. Буду благодарен.
Вложения
проблема.jpg
проблема.jpg (187.64 КБ) 4115 просмотров
Аватара пользователя
AlexSimp
Сообщения: 568
Зарегистрирован: 2013.04.09, 11:30
Откуда: Киев

Re: Подскажите новичку, как обратится к createUrl из вида

Сообщение AlexSimp »

На будущее: один вопрос = одна тема.
Жду, когда на форуме появятся вопросы "как сделать сайт на Yii?" и "как сложить два числа с помощью Yii?"...
Ответить