js redirect и роут

Вопросы по вёрстке и JavaScript
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

js redirect и роут

Сообщение zibert02 »

забавный вопрос-как подружить редирект на яваскрипте с роутами и параметрами
например

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

function nodeClick(id, name)
{
    if (id > 0){
        location.href = '<?php echo $this->createUrl("category/edit", array('id'=>'')) ?>' + id;
    }
}
т.е. параметр будет известен только на клиенте, а урл надо строить на серваке
счас работает потомучто не настроен роутинг, выводит
location.href = '/index.php?r=catalog/category/edit&id=' + id
а если будут всякие правила генерации урлов? как быть?
понимаю что yii тут не виноват, может есть красивое решение?
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: js redirect и роут

Сообщение slavcodev »

ага, красивое решение, написать на js urlManager ) которому передавать те же правила )
Жду Yii 3!
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: js redirect и роут

Сообщение Ekstazi »

:)
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: js redirect и роут

Сообщение zibert02 »

я без роутинга хотел, но красиво
счас сделал так

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

if (id > 0){
        var url = '<?php echo $this->createUrl('category/edit', array('id'=>'paramVal')) ?>';
        location.href = url.replace('paramVal', id);
    }
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: js redirect и роут

Сообщение Ekstazi »

А зачем это ? Чем стандартный CHtml::link не подошел ?
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: js redirect и роут

Сообщение slavcodev »

у него ссылки динамически на клиенте генерятся, CHtml::link тут ни причем
Жду Yii 3!
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: js redirect и роут

Сообщение Ekstazi »

Судя по первой записи у него есть дерево(CTreeView небось), и он при клике на узел хочется перейти по ссылке, но на сколько я знаю CTreeView можно передавать ссылки в поле text.
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: js redirect и роут

Сообщение zibert02 »

Ekstazi писал(а):Судя по первой записи у него есть дерево(CTreeView небось), и он при клике на узел хочется перейти по ссылке, но на сколько я знаю CTreeView можно передавать ссылки в поле text.

имелось ввиду сделать каждую ноду ссылкой?
у меня данные для дерева используются на двух разных CTreeView, и на другом CTreeView нужно при клике на ноду делать кое что на странице, без редиректа
поэтому выбрал такой вариант, когда по клику делаются разные вещи :)

кстати я данные для дерева форматирую в модели

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

public function formatData($catalog)
        {
            $backColor = '';
            if ($catalog->is_deleted)
                    $backColor = 'background-color: lightgrey;';
            
            return array(
                'text'=>"<span style='cursor:pointer;{$backColor}' id='{$catalog->id}' onclick=\"nodeClick(this.id, '{$catalog->name_main}')\">{$catalog->name_main}</span>",
                'id'=>$catalog->id,
            );
        } 
с одной стороны наверно не правильно, ведь это надо делать в вью
кто что думает?
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: js redirect и роут

Сообщение Ekstazi »

Задачу можно решить проще, используя $.live . Я писал об этом ранее на форуме. Так же можно применить фильтры, чтоб отсеять все лишнее. Я не рекомендую вам использовать onclick у тега span, так как это не эстетично, и считается дурным тоном.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: js redirect и роут

Сообщение slavcodev »

Ekstazi писал(а):проще, используя $.live
ничем не сложнее использовать delegate, зато оптимальнее
Жду Yii 3!
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: js redirect и роут

Сообщение Ekstazi »

Мне привычней $.live а delegate я просто не понял, он какой-то "странный".
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: js redirect и роут

Сообщение slavcodev »

чем он странный и не понятного? хотя это уже наверное оффтоп
Жду Yii 3!
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: js redirect и роут

Сообщение Ekstazi »

Вот этим вот:

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

   $('ul').delegate('li', 'click', function(e){ 
А так по сути тот же live в контексте, только синтаксис длинее :)
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: js redirect и роут

Сообщение slavcodev »

это длинный синтаксис, заставляет не проверять каждый элемент и экономит ресурсы
Жду Yii 3!
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: js redirect и роут

Сообщение zibert02 »

Ekstazi писал(а):Задачу можно решить проще, используя $.live . Я писал об этом ранее на форуме. Так же можно применить фильтры, чтоб отсеять все лишнее. Я не рекомендую вам использовать onclick у тега span, так как это не эстетично, и считается дурным тоном.

подскажите как :)
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: js redirect и роут

Сообщение Ekstazi »

$('.tree').delegate('a','click',function(){
alert($(this).parent().attr('id')
})

Вот так можно получить id узла по клику на него, если он указан )
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: js redirect и роут

Сообщение zibert02 »

сделал через live

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

$('li').live('click', function(){
    alert(this.id);
    return false;
});
 
отлавливает нормально, только оно ловит даже клик по крестику.
как сделать чтобы ловило только клик по тексту, а крестик только открывал\закрывал ветку?

до этого делал через

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

$('span').click(function(e) {
    // avoid expand / collapse action
    e.stopImmediatePropagation();
}); 
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: js redirect и роут

Сообщение slavcodev »

может это связано с тем, что ты ловил клик по span, а поменял на li?
Жду Yii 3!
zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: js redirect и роут

Сообщение zibert02 »

mc-bear писал(а):может это связано с тем, что ты ловил клик по span, а поменял на li?
отчасти да
вначале я выводил так
<span style='cursor:pointer;{$backColor}' id='{$catalog->id}' onclick=\"nodeClick(this.id, '{$catalog->name_main}')\">{$catalog->name_main}</span>
это я совал в li, счас я спан убрал и ловлю клик через live
вот теперь интересуюсь, как можно и клик по li отловить и по крестику чтобы крестик только развернул ноду
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: js redirect и роут

Сообщение slavcodev »

нет под рукой и никогда не пользовался деревьями этими, скорее всего там есть скрипт от yii который ловит клик по крестику, а ты его перекрываешь.
думаю правильнее будет все таки текст обернуть в span и ловить клик по span.
и еще добавьте дереву id (<ul id="bla">) и ловить только клики по нужным объектам

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

$('#bla').delegate('span','click',function(e){
  alert(0);
  e.preventDefault();
});
Жду Yii 3!
Ответить