DbHelp.ru
Маленький Yii блог
Комментарии
Slavik: Нигде не вижу ответа на такой вопрос Как сделать что-б...
Denis: Полностью рабочий код для Yii 1.1.15 можете найти на https://gith...
DeD: Запрацювало тільки після заміни if (isset($_GET['root'])) на if...
Denis: Если что- можете поюзать полный код уроков: https://github.com/d...
Mj: Мдааа так было интересно, ех... Но лучше поздно чем нико...



Сервер Ultima Online - Forest Wars (от создателя данного блога)

"By Example" : CHtml - link()

Рубрика: Перевод Cookbook

Оцените эту статью:

Рейтинг: 0.00 (0)
8 Окт. 2009
Опубликовать в Twitter Написать в Facebook Опубликовать в своем блоге livejournal.com

Yii Framework Blog img http://dbhelp.rucookbookСерия рецентов "By Example" пытается предоставить для разработчиков примеры использования самых распостраненных действий в Yii. Учимся использовать CHtml::link() на примерах!


[+update 8/10/2009]

---

CHtml::link() method

public static string link(string $text, mixed $url='#', array $htmlOptions=array ( ))

Создание линков (ссылок) с использованием CHtml

Пример 1: Ссылка на действие контроллера

<?php echo CHtml::link('Link Text',array('controller/action')); ?>

Результат:

<a href="index.php?r=controller/action">Link Text</a>

 

Пример 2: Ссылка на действие контроллера с дополнительными параметрами

<?php echo CHtml::link('Link Text',array('controller/action',
                                         'param1'=>'value1')); ?>

Результат:

<a href="index.php?r=controller/action&param1=value1">Link Text</a>

 

Пример 3: Ссылка на действие контроллера с большим кол-вом дополнительных параметров

<?php echo CHtml::link('Link Text',array('controller/action',
                                         'param1'=>'value1',
                                         'param2'=>'value2',
                                         'param3'=>'value3')); ?>

Результат:

<a href="index.php?r=controller/action&param1=value1&param2=value2&param3=value3">Link Text</a>

 

Пример 4: Ссылка на действие внутри текущего контроллера

Предположим вы находитесь в PostController/view и хотите перейти в PostController/create. Для этого просто укажите название экшинса без указания контроллера! Если хотите перейти на другой контроллер - используйте примеры указанные выше.

<?php echo CHtml::link('Link Text',array('action')); ?>

 

Пример 5: Ссылка на контроллер от корня

Предположим вы находитесь в модуле и хотите сделать ссылку на корневой контроллер. В этом случае добавьте косую черту в начале строки URL. Это имеет смысл только если вы работаете с модулями

<?php echo CHtml::link('Link Text',array('/controller/action')); ?>

 

Пример 6: Ссылка на действие контроллера в другом модуле

<?php echo CHtml::link('Link Text',array('/module-id/controller/action')); ?>

 

Пример 7: Ссылка на действие контроллера со стороны модуля

<?php echo CHtml::link('Link Text',array('/{$this->module->id}/controller/action')); ?>

 



Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
Другие yii статьи:

  1. Я надеюсь на эту статью обратят внимание люди которые занимаються обучением по моим урокам «Создаем блог вместе». Сегодня я обнаружил ... "Создаем блог вместе : bugfix #1"

  2. Эта статья устарела т.к. была написана для yii версии 1.0.х; Если вы используете более новую версию - у вас могут ... "Урок 4 : Создаем отдельную страницу для постов (тем)"

  3. Парни из русского сообщества перевели очень важную часть документации - "Использование построителя форм". Это всё нас будет ждать в ... "Перевод справки по форм-билдеру"

[adm] zolter

Было сказано: Воскресенье, 27 Сентябрь 2009

В пояснение лишь скажу что данный код надо использовать в отображениях. К примеру, для генерации создания ссылок на странице вместо привычных для вас <a href="...">

[guest] RSol

Было сказано: Вторник, 29 Сентябрь 2009

Предлагаю в уроке №4 переделать. :-)

[adm] zolter

Было сказано: Вторник, 29 Сентябрь 2009

хы. кстати да )) сенк )

[adm] zolter

Было сказано: Четверг, 08 Октябрь 2009

Статья обновлена, были добавлены новые примеры в связи с их появлением на eng версии.

Скоро будут готовы такие же статьи по:
CHtml::button()
CHtml::textField()
CHtml::listData()
CHtml::dropDownList()

[guest] Анонимус

Было сказано: Пятница, 09 Октябрь 2009

Пофиксь пожалуйста рсс, неверно эскейпит кавычки в загаловках

[adm] zolter

Было сказано: Пятница, 09 Октябрь 2009

Готово. Спасибо :)

[guest] Гость

Было сказано: Пятница, 09 Октябрь 2009

А как получить только содержимое тега href при генерации ссылки?
Задача - сгенерировать ссылку до контроллера с параметрами и отправить эту ссылку по емейлу.

[adm] zolter

Было сказано: Пятница, 09 Октябрь 2009

Вот так вот:


$this->createUrl('site/category')

или если нужны параметры дополнительные то вот так:

$this->createUrl('site/category', array('id'=>$id))

[guest] Гость

Было сказано: Суббота, 10 Октябрь 2009

Спасибо.

[guest] Гость

Было сказано: Среда, 28 Октябрь 2009

А как получить полный URL с доменом.
Задача сгенерировать URL что бы отправить его EMail'ом.
допустим контроллер и экшен такие: users/approve
параметер 'code' => '12345'

[adm] zolter

Было сказано: Четверг, 29 Октябрь 2009

Первое что в голову пришло это

echo 'http://' . $_SERVER['HTTP_HOST'] . $this->createUrl('users/approve', array('code'=>12345))

[guest] Гость

Было сказано: Пятница, 30 Октябрь 2009

Во. Оказывается есть #this->createAbsoluteUrl(...)

[adm] zolter

Было сказано: Пятница, 30 Октябрь 2009

Спасибо. Забыл про этот метод, тока 1 раз приходилось им пользоваться.

[guest] Гость

Было сказано: Вторник, 10 Ноябрь 2009

А еще тогда вопросик. Как добавить аттрибут class тегу "a"?
Что бы результат работы CHtml::link был такой
<a href="{url}" class="myClass">text</a>

[adm] zolter

Было сказано: Вторник, 10 Ноябрь 2009

Очень просто. За это у нас отвечает парраметр htmlOptions:

echo CHtml::link('test', array('site/index'), array('class' => 'myClass'));


получим

<a class="myClass" href="/site/index">test</a>

[guest] Brakelv

Было сказано: Среда, 30 Декабрь 2009

Не знал, в какой именно раздел обратиться, решил отписаться тут.
Как можно задать title, description, keywords в layouts, при помощи CHtml. А так же как изменять эти значения в контролере?

[guest] Гость

Было сказано: Четверг, 30 Июнь 2011

А как сделать вот так пример <a href="www.foreingsite.ru" /> Метод link такое дает сделать?

[guest] Гость

Было сказано: Пятница, 11 Октябрь 2013

Если у вас в БД в поле под название 'www' хранятся ссылки, то для отображения самой ссылки и её выполнения код ниже.

echo CHtml::link(CHtml::encode($data->www), $data->www);


А если хотите сделать ссылку с названием чего-либо из того, что есть в вашей БД, то пишите так,
echo CHtml::link(CHtml::encode($data->name), $data->www);

Оставить комментарий


Код:
Имя: