А как вы передаете site_url в javaScript?

Вопросы об установке, настройке и работе самого фреймворка

А как вы передаете site_url в javaScript?

Сообщение taral » 22 ноя 2008, 22:26

Сначала я передавал адрес сайта (site_url()) и путь к корню сайта (base_url()) как параметры в функцию.
Код: Выделить всё
<input type="submit" name="button" value="Поиск" onClick="search_start('<?php echo site_url()?>', '<?php echo base_url()?>')">

Но мне показалось это не удобным.
Решил создать создать 2 глобальных переменных siteUrl и baseUrl и просто использовать их в скрипте.
Создание этих переменных я реализовал так.
В контроллере:
Код: Выделить всё
class Editor extends Controller {

   public $scripts         = array();
   public $styles         = array();
   public $page_title      = 'Клиент';
        public $global                    = array();

   function Editor() {
      parent::Controller();
      $this->load->model('editor_m');
   }

   function index() {
      $this->global['siteUrl'] = site_url();
       $this->global['baseUrl'] = base_url();
      //код...
   }

А в хеаде страници:
Код: Выделить всё
<?php if($this->global) {
echo '<script type="text/javascript">'."\n";
   echo "var global   = new Object();\n";
   echo "window.onload = function() {\n";
   foreach($this->global  as $key => $val) {
      echo "\tglobal.{$key}   = '{$val}';\n";
   }
   echo "}\n";
echo "</script>\n";
} ?>

Таким образом я могу объявить в контроллере все переменные которые я хочу использовать глобально. И использовать их в javaScript как global.имяПеременной
Хотелось бы узнать, возможно есть более хорошее решение поставленной задачи. Если знаете, поделитесь=) Спасибо за внимание.
Аватара пользователя
taral
 
Сообщения: 166
Зарегистрирован: 03 ноя 2008, 21:01

Re: А как вы передаете site_url в javaScript?

Сообщение Big_Shark » 24 ноя 2008, 02:13

Это первый вариант
Код: Выделить всё
<script type="text/javascript">
   var global   = new Object();
   window.onload = function() {
       global.base_url   = '<?=basre_url();?>';
       global.site_url   = '<?=site_url();?>';
   }
</script>


2 вариант сделать хелпер записать в него
Код: Выделить всё

function global_JS
($array) //название тупое но думать лень
{
    if(is_array($array))
    {
        $out='<script type="text/javascript">'."\n";
        $out.= "var global   = new Object();\n";
        $out.="window.onload = function() {\n";
        foreach($array  as $key => $val) {
            $out.="\tglobal.{$key}   = '{$val}';\n";
        }
        $out.="}\n";
        $out.="</script>\n";
        return $out;
    }
    return false;
}
 

после этого в модели вызывать так
Код: Выделить всё
<?= global_JS($this->js_global);?>

ну или чтота типа того)

P.S. rогда вставляеш код заменяй [cоde] на [cоde=php]
Отвечу на ваши вопросы по CodeIgniter и Kohana3
Благодарности принимаются тут: 41001216991355 (ЯД)
Big_Shark
Модератор
 
Сообщения: 1307
Зарегистрирован: 03 фев 2009, 02:12
Откуда: Владивосток

Re: А как вы передаете site_url в javaScript?

Сообщение taral » 24 ноя 2008, 17:01

Это первый вариант

Выглядит более лаконично=) Я сам предпочитаю использовать <?=?>
Кстати недавно узнал что лучше <?=?> не использовать. Автор той статьи говорил, что в версии PHP6 этот вид записи могут не поддерживать. А жаль. Оч. лаконично пишется=)
Аватара пользователя
taral
 
Сообщения: 166
Зарегистрирован: 03 ноя 2008, 21:01

Re: А как вы передаете site_url в javaScript?

Сообщение Big_Shark » 25 ноя 2008, 04:05

про 6 php не знаю но знаю что сейчас эта деректива отключена на некоторых дешовых хостингах и ее можна включить через php.ini
а вообще CI рекомендует пользоваться как раз краткой записью тегов
Отвечу на ваши вопросы по CodeIgniter и Kohana3
Благодарности принимаются тут: 41001216991355 (ЯД)
Big_Shark
Модератор
 
Сообщения: 1307
Зарегистрирован: 03 фев 2009, 02:12
Откуда: Владивосток

Re: А как вы передаете site_url в javaScript?

Сообщение taral » 26 ноя 2008, 17:50

CI рекомендует пользоваться как раз краткой записью тегов

Сразу скажу что CI я люблю. Да и короткую запись <?=?> тоже.
Но у создателей CI логика весьма веселая.
По стандартам функции из хелперов (да и любые) в представлении использовать не стоит. У CI это дело обычное.
Я думаю что ситуация с <?=?> похожая. Но сам отказыватся от <?=?> не собираюсь. Уж больно удобно=)
Аватара пользователя
taral
 
Сообщения: 166
Зарегистрирован: 03 ноя 2008, 21:01

Re: А как вы передаете site_url в javaScript?

Сообщение wordwild » 26 ноя 2008, 21:25

taral писал(а):По стандартам функции из хелперов (да и любые) в представлении использовать не стоит.

Можно ссылку на источник? По каким стандартам?
wordwild
 
Сообщения: 167
Зарегистрирован: 10 фев 2009, 21:58
Откуда: Ирпень

Re: А как вы передаете site_url в javaScript?

Сообщение taral » 26 ноя 2008, 22:15

Можно ссылку на источник? По каким стандартам?

Я это говорил не как довод в споре. Посему не оч. хочется искать опять этот источник. Да и стандарты это все хорошо. Но их как правило не придерживаются=) Это как идеал к которому нужно стремится. Они задают вектор усовершенствования. Но в реальных условиях на 100% не осуществимы.
А вообще. Вызов функции это уже обработка данных. А представление отвечает за отображение информации. Шаблонизаторы и были созданы чтобы вообще убрать код из представления.
Отображение содержит визуальное представление данных для конечного пользователя. В нем, как правило, содержатся обычные html страницы, но в CodeIgniter это могут быть и фрагменты, такие как шапка, колонтитул, меню и т.п.

http://code-igniter.ru/user_guide/overview/mvc.html
Аватара пользователя
taral
 
Сообщения: 166
Зарегистрирован: 03 ноя 2008, 21:01

Re: А как вы передаете site_url в javaScript?

Сообщение wordwild » 26 ноя 2008, 22:23

Ну почему обязательно довод в споре? Разве я не могу интересоваться для повышения собственной образованности?
Посему прошу ссылку на источник для ознакомления и, если нужно, изучения...
wordwild
 
Сообщения: 167
Зарегистрирован: 10 фев 2009, 21:58
Откуда: Ирпень

Re: А как вы передаете site_url в javaScript?

Сообщение taral » 27 ноя 2008, 00:42

Стандарт это общепринятая модель поведения. Так сходу найти источник в котором прямо утверждалось бы что использование функций в представлении - это плохо найти не удалось.
В основном говорится за что отвечает представление, что там должно быть. Потому как делать не нужно можно дойти только методом исключения.
Почитать про модель MVC можно на википедии. Жаль на русской, материала мало. В английском варианте больше. Еще про эту модель можно почитать в книге Дмитрия Котерова, в конце.
Есть логика представления, есть логика контроллера, есть логика модели. И смешивать их не нужно. А использование функций в представлении неминуемо (кроме исключений) притягивает чужую логику.
Аватара пользователя
taral
 
Сообщения: 166
Зарегистрирован: 03 ноя 2008, 21:01

Re: А как вы передаете site_url в javaScript?

Сообщение Big_Shark » 27 ноя 2008, 02:26

Тут про стиль кодинга если не читал
http://codeigniter.com/user_guide/gener ... guide.html
в статье пишеться что правельно использовать всетаки <?php echo $foo; ?> наслучай отключенной дерективы short_open_tag
а вот в статье http://codeigniter.com/user_guide/gener ... e_php.html говорят о том что краткая запись тегов может помоч в написании более понятного и короткого кода и рекомендуют использовать ее в шаблоне
Да еще и в классе оутпут есть фича которая заменяет "<?=" на "<?php echo" включить ее можна в конфиги

Я считаю что хелперу можна исползовать везде веть это обычный набор функций. вы же используети в шаблоне strtoupper(),ucfirst() и другие такогоже плана а значит и самописные хелперы можна использовать
я недавно писать хелпер он мне из номера 79140000000 делал +7 914 0000000 и он как раз использовался в отображении так как передавать в отображения 2 варианта я не вижу смысла

P.S. Выбирайте нормальный хостинг у них везде включен short_open_tag )))
Отвечу на ваши вопросы по CodeIgniter и Kohana3
Благодарности принимаются тут: 41001216991355 (ЯД)
Big_Shark
Модератор
 
Сообщения: 1307
Зарегистрирован: 03 фев 2009, 02:12
Откуда: Владивосток

Re: А как вы передаете site_url в javaScript?

Сообщение taral » 27 ноя 2008, 02:41

Раз уж мы отошли от темы. Позволю себе предложить подискутировать на такую тему:
Для меня это наболевший вопрос. Поскольку прямого ответа на него нету. И я все бьюсь как же лучше делать.
Допустим я делаю сайт по новостям.
На главной делаю запрос в базу:
1) 10 новостей на странице Х
2) 5 самых популярных новостей.
3) 5 самых активных пользователей.
4) 10 посл. комментариев к новостям.
На страницу подробнее я делаю такие запросы:
1) Детальная информация про новость.
2) Комментарии к этой новости.
3) 3 похожих новости.
Допустим все.
Как лучше всего поделить модели?
Логично делить по таблице с которой она работает.
Но тогда для главной страници будут загружаться 3 модели.
А для страници подробно 2.
и будет много не используемых функций.
Если для каждого контроллера делать модель то код будет повторятся. Тоже не дело.
Каждый раз при создании нового сайта приходится обдумывать как лучше делить.
Как вы решаете эту проблему?
На крайний случай можно вообще сделать 1 модель для всего сайта. Излишки лишнего кода не так страшны (в разумных пределах=) ) Но я все бьюсь над идеальным вариантом=) Может мне делать нечего. Может что-то другое...
Аватара пользователя
taral
 
Сообщения: 166
Зарегистрирован: 03 ноя 2008, 21:01

Re: А как вы передаете site_url в javaScript?

Сообщение taral » 27 ноя 2008, 02:48

Big_Shark писал(а):Я считаю что хелперу можна исползовать везде веть это обычный набор функций. вы же используети в шаблоне strtoupper(),ucfirst() и другие такогоже плана а значит и самописные хелперы можна использовать
я недавно писать хелпер он мне из номера 79140000000 делал +7 914 0000000 и он как раз использовался в отображении так как передавать в отображения 2 варианта я не вижу смысла

Да я тоже так считаю. И функции использую в представлении. И короткие теги тоже. Тут не про это разговор был.
Да еще и в классе оутпут есть фича которая заменяет "<?=" на "<?php echo" включить ее можна в конфиги

А вот это не знал. Спасибо большое за информацию.
Аватара пользователя
taral
 
Сообщения: 166
Зарегистрирован: 03 ноя 2008, 21:01

Re: А как вы передаете site_url в javaScript?

Сообщение Big_Shark » 27 ноя 2008, 03:04

2 варианта

1 вариарт
модель news предостовляет полное api для упровления новостями коментариями и тд всем что связано с новостяи вообшем --- громозка и по мне неправельно
2 вариант
на юзеров свой модуль на новости свой и так далее
Лишний код помехи не создаст так как ты его не будеш использовать
это более гибкий и правильный вариант
сам использую 2 вариант

Да я тоже так считаю. И функции использую в представлении. И короткие теги тоже. Тут не про это разговор был.

хм странно вроде бы про это
По стандартам функции из хелперов (да и любые) в представлении использовать не стоит. У CI это дело обычное.
Отвечу на ваши вопросы по CodeIgniter и Kohana3
Благодарности принимаются тут: 41001216991355 (ЯД)
Big_Shark
Модератор
 
Сообщения: 1307
Зарегистрирован: 03 фев 2009, 02:12
Откуда: Владивосток

Re: А как вы передаете site_url в javaScript?

Сообщение taral » 27 ноя 2008, 03:08

хм странно вроде бы про это

Разговор был про стандарты MVC.
Код: Выделить всё
По стандартам функции из хелперов (да и любые) в представлении использовать не стоит. У CI это дело обычное.

Тут я говорил что CI на них немного забивает.
Но лично я в этом ничего плохого не вижу=) Я люблю CI =) Вот.
Код: Выделить всё
сам использую 2 вариант

Я тоже.
Аватара пользователя
taral
 
Сообщения: 166
Зарегистрирован: 03 ноя 2008, 21:01

Re: А как вы передаете site_url в javaScript?

Сообщение Big_Shark » 27 ноя 2008, 03:34

по стандартам MVC вьювер отвечает за вывод информации на экран а каким образам это делаеться через хелперы или без них должно быть пофигу ибо в смарти который являетья шаблонизатором и ответственный за вывод можно даже обьекты использовать ты веть не будеш в модели задавать то как выводить дату пользователю да и он и не должен это делать за это ответственный вьювер там ты и будеш писать date() а если ты хочеш день недели писать текстом причем русским значит ты будеш использовать какую либо свою фонкцию типа rus_date() а тут уже ты будеш пользоваться хелперами
Полностью не использовать хелперы в вьювери можно использовать только на какомнебуть стремном хомпейдж.
Отвечу на ваши вопросы по CodeIgniter и Kohana3
Благодарности принимаются тут: 41001216991355 (ЯД)
Big_Shark
Модератор
 
Сообщения: 1307
Зарегистрирован: 03 фев 2009, 02:12
Откуда: Владивосток

Re: А как вы передаете site_url в javaScript?

Сообщение wordwild » 27 ноя 2008, 18:06

Итак, за неимением ссылки на стандарты, история про хэлперы в исполнении taral засчитывается в "пустой базар"...
wordwild
 
Сообщения: 167
Зарегистрирован: 10 фев 2009, 21:58
Откуда: Ирпень

Re: А как вы передаете site_url в javaScript?

Сообщение taral » 27 ноя 2008, 22:08

wordwild писал(а):Итак, за неимением ссылки на стандарты, история про хэлперы в исполнении taral засчитывается в "пустой базар"...

Немного подправлю. Если бы твои слова имели какую то ценность. То моя "история" могла бы засчитаться в пустой базар.
А так. Имеем то что имеем. Ты сказал, я сказал.
Когда я говорил про хелперы, я не ставил себе цели убеждать кого-то. И для того чтобы кому-то что-то доказать (а ведь я даже не начинал спорить) парсить нет в поисках доказательства... Нечего мне больше делать.
И все же. В идеальном варианте в шаблоне есть переменные, конструкции if/else/for. Этого достаточно для решения большинства задач.
Такой подход делает шаблон более понятным верстальщику.
Аватара пользователя
taral
 
Сообщения: 166
Зарегистрирован: 03 ноя 2008, 21:01

Re: А как вы передаете site_url в javaScript?

Сообщение wordwild » 27 ноя 2008, 23:11

Да не в ценности дело. Просто упоминание "стандартов", может сильно действовать на неокрепшие умы начинающих программистов. Вот запомнит такой программист "стандарт" и будет мучатся. Также могут влиять фразы типа "В идеальном варианте". Если нет возможности подтвердить сказанное, попрошу дописывать в посты - ИМХО.
wordwild
 
Сообщения: 167
Зарегистрирован: 10 фев 2009, 21:58
Откуда: Ирпень

Re: А как вы передаете site_url в javaScript?

Сообщение taral » 28 ноя 2008, 00:07

Я думаю что вопрос решен. Жаль что решали не тот вопрос который планировалось до этого. Но все же. Потому считаю тему закрытой.
Аватара пользователя
taral
 
Сообщения: 166
Зарегистрирован: 03 ноя 2008, 21:01

Re: А как вы передаете site_url в javaScript?

Сообщение mc-bear » 28 ноя 2008, 00:20

taral писал(а):
CI рекомендует пользоваться как раз краткой записью тегов

Сразу скажу что CI я люблю. Да и короткую запись <?=?> тоже.
Но у создателей CI логика весьма веселая.
По стандартам функции из хелперов (да и любые) в представлении использовать не стоит. У CI это дело обычное.
Я думаю что ситуация с <?=?> похожая. Но сам отказыватся от <?=?> не собираюсь. Уж больно удобно=)


Где написано что CI рекомендует? В мануале сказано что есть такая возможность, но никто не рекомендует.
Мне например ужасно не нравится сокращенная форма, читаемость мне кажится усложняется.

А по поводу вызова хелперов из представления не вижу большой разница использования переменных.
Ведь хелпер просто возвращает нужную переменную то что не смог пердать контроллер.
Аватара пользователя
mc-bear
 
Сообщения: 133
Зарегистрирован: 03 фев 2009, 20:24

След.

Вернуться в Общие вопросы по фреймворку

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0