DbHelp.ru
Маленький Yii блог
Комментарии
Гость: Разве у вас маленькая сердце, вы можете скрыть сей поро...
Гость: http://ykvhbxnod.atedosoc.ru/weBsxc.htm http://ytacal.ifosomycaj.ru/jozefina-mutcenbaher-porno.htm ...
Гость: http://isckgnmg.atedosoc.ru/2017/12/16_kak-ubrat-porno-banner-kotoryy-stoit-po-verh-vseh-okon.aspx ...
Гость: wh0cd2594827 [url=http://xenical02.us.org/]xenical[/url] [url=http://prednisolone911.us.org/]prednis...
Гость: pharmacies that sell Levitra Oral Jelly in Canada pharmacy NO PRESCRIPTION ; ordering at lowest pr...



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

Шаг 3 : Что такое MVC?

Рубрика: Первые шаги

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

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

Yii Framework Blog img http://dbhelp.ru3 Рамки MVC весьма размыты, поэтому моё понимание может не совпадать с полученными вами ранее знаниями. Хотел бы напомнить что все сказанное в уроке является моим личным опытом, и я не навязываю вам думать точно также. Такой материал весьма тяжело рассказывать, поэтому прошу отнестись с пониманием. И так, начнем урок...

---

Введение

Model-view-controller или просто MVC  — это шаблон проектирования приложения. Он применятся как в web разработке, так и в обычном прикладном программировании. Выбор данной архитектуры подразумевает разделение приложения на три логические части (компоненты), каждая из которых выполняет определенный ряд своих функций.

Большая гибкость приложения на MVC и является самым главным плюсом к его использованию. Для себя я отметил следующие вещи:

  1. Вы можете изменять один компонент приложения при минимальном воздействии на другие.
  2. Все таблицы, html код, да и вообще вся верстка — теперь в отдельных файлах. Тонны php кода не будут мешаться с html (превращая приложения в кучу мусора).
  3. Исходя из пункта «два» -  верстальщики начнут вас уважать и благодарить :) Также вы с лёгкостью сможете подключить к приложению шаблонизатор (Smarty или др).
  4. У вас получиться во много раз уменьшить повторение кода

Yii Framework Blog img http://dbhelp.ruyii-poweredКонечно если есть «плюсы», то и есть «минусы». В принципе «минусы» можно найти в чем угодно, поэтому обвинения что «MVC приложение работает медленнее чем приложение на чистом php» — я не рассматриваю. Понимаете, за счет небольшого (именно небольшого) убытка в скорости, вы получаете приложение которое и через десять лет будет легко расширять (что не всегда можно сказать про крупный сайт на чистом php).

Э..?

Yii Framework Blog img http://dbhelp.ruhelloworld Давайте поговорим всё таки за счет чего достигаются все эти плюсы. Как я уже и говорил, приложение разбивается на три части. Рассмотрим подробнее что и для чего:

Контроллер (Controller)

В Yii контроллером называется класс наследуемый от CController или дочернего от него. Сам контроллер у нас занимается следующими действиями:

  • Обрабатывает данные которые пришли от пользователя (GET, POST запросы)
  • Содержит в себе общую логику приложения (проверки, анализ, редиректы). Проверяет имеет ли пользователь доступ к данному куску приложения и тп.
  • Говорит где и что должно быть показано пользователю, но сам ничего не выводит! Те. просто вызывает в нужном месте нужные нам отображения
  • Обращается к модели если надо получить какие то данные (например из базы)

Все данные которые пользователь указывает в адресной строке — попадают на обработку к контроллеру. Если вы не меняли маршруты-по-умолчанию у себя на сайте, то написав localhost/site/ - пользователь обратится к контроллеру Site.

Заметка : В приложении может быть как один контроллер, так и несколько. 

Внутри класса контроллера должны находиться экшинсы которые отвечают за отдельные части приложения. Экшинсы (Actions) — это простые методы, которые имеют приставку «action» перед своим именем.

Вот так выглядит простой контроллер Site с двумя экшинсами:

<?php
// После имени контроллера - обязательно приставка Controller!
// т.е. вместо Site - пишем SiteController. Также наш контроллер
// обязательно должен быть наследован от класса CController
// или дочернего от него
class SiteController extends CController
{
    // перед названием экшинса вы должны написать приставку action,
    // после этого названиея (с большой буквы).
    public function actionIndex()
    {
    }
    public function actionAuthor()
    {
    }
}

Важно запомнить:

  • все экшинсы должны начинаться с приставки «action»
  • все контроллеры должны после имени иметь приставку «Controller»
  • не забывайте наследовать свой контроллер от CController или дочернего от него класса.

Давайте теперь разберем для чего нам экшинсы.

Когда вы набрали в браузере : localhost/site/index/ - вы обратились к контроллеру Site и его экшинсу index (actionIndex). В данном случае весь код который будет внутри экшинса (к которому мы обращаемся) — будет выполнен.

Теперь давайте немного модернизируем наш код:

    public function actionIndex()
    {
        die ("Привет! Это actionIndex()");
    }
    public function actionAuthor()
    {
        die ("Привет! Это actionAuthor()");
    }

Когда мы обратимся к нашему приложению по адресу localhost/site/index/ мы получим на экране надпись:

Привет! Это actionIndex()

А если наберем localhost/site/author/ :

Привет! Это actionAuthor()

Заметка: Функция die() в php — аналогична функции echo. Единственное отличие в том что после вывода  — приложение дальше не выполняется. 

Как вы понимаете благодаря такой разбивке контроллеров вы можете легко планировать страницы внутри своего приложения.

Также хочу добавить, что написав localhost/site/author/?test=hello_world — вы также как и раньше обратитесь к экшинсу author, но на этот раз в нем будет доступна переменная $_GET['test'] со значением «hello_world».

Заметка: Для того что бы использовать красивые адреса вида localhost/site/author/2007/09/01/ и т.п. — надо использовать маршруты! Рассматривать данный материал мы будем отдельно, не в этом уроке!

Обычно все контроллеры приложения в Yii располагаются по адресу protected/controllers/. Имя контроллера также должно иметь приставку Controller. К примеру, если вы хотите что бы по адресу localhost/user/index/ выводился текст «Привет Вася!», вы должны выполнить следующие действия:

  1. В папке protected/controllers/ создать файл UserController.php
  2. В нем разместить следующий код:
    <?php
    class UserController extends CController
    {
        public function actionIndex()
        {
            die ("Привет Вася!");
        }
    }
  3. Набрать в браузере localhost/user/index/ или localhost/user/
Заметка: Хочу отметить что за вывод страницы localhost/ также отвечает контроллер. (Да, он не указан в адресе после localhost, но он все равно есть). В Yii конфиге вы можете указать какой контроллер будет выполняться «по умолчанию» (обычно это SiteController)

Модель (Model)

Модель это класс для работы приложения с базой. Для каждой таблицы с которой предстоит работать — создается своя модель (в Yii это класс наследуемый от CModel или производного от него).

Модель в нашем приложении выполняет следующие действия:

  1. Облегчает работу с данными в базе (при наследовании от CActiveRecord или производного от него)
  2. Проверка данных перед сохранением/добавлением согласно правилам (rules)
  3. Содержит в себе пользовательские методы для более продвинутой работы с базой

Самая простая модель выглядит следующим образом:

<?php
// Наследуем нашу модель от CActiveRecord
class Users extends CActiveRecord
{       
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }
    /**
     * Специально что бы указать с какой таблицей
     * в базе данных работает наша модель.
     *
     * @return unknown
     */
    public function tableName()
    {
        // в нашем случае это таблица user
        return 'user';
    }
}

Заметка: Вы можете спокойно использовать данный каркас у себя в работе (изменяя лишь название класса и таблицу с которой работает модель).

Перед нами модель для работы с пользователями (с таблицей user). Благодаря тому что мы наследуем её от класса CActiveRecord — мы получаем дополнительный функционал (методы find, count, findAll и др.)

Для того что бы обратиться к модели из контроллера необходимо написать:

Название_модели::model()->название_метода();

Либо предварительно создав экземпляр модели:

$model = new Название_модели();
$model->название_метода();

Заметка: В отличии от контроллера после названия класса модели — приставок писать не надо. Мы можем называть наши модели как хотим. Файл модели обычно располагается в папке protected/models и совпадает с названием класса. 

Посмотрите как просто выглядит запрос для получения пользователя с логином - «zolter»:

$user_info = User::model()->findByAttributes(array('login' => 'zolter'));

В данном примере я использовал встроенный метод  findByAttributes в котором указал что необходимо найти запись где поле «login» равняется значению «zolter». Если такая запись в таблице users существует — в переменной $user_info будет сохранен результат (обьект).

Получить доступ к его полям вы можете следующим образом:

echo $user_info->login; // получу логин (zolter)
echo $user_info->id; // получу id

Заметка: Встроенных методов достаточно много. Более подробно они будут описаны в «Шаг 4: Модель». Самую полную информацию по всем методам вы можете получить в API (http://www.yiiframework.com/doc/api/CActiveRecord) [англ] или статье «Active Record» [рус.] (http://www.yiiframework.ru/doc/guide/ru/database.ar)

Если вам не хватает встроенных методов модели — вы можете легко расширить их. Для этого просто добавьте новый метод в свою модель и обращайтесь к нему аналогичным образом.

Заметка: Для каждой таблицы с которой работает приложение должна быть создана соответствующая модель.

Отображение (View)

Главной функцией отображения является вывод данных (которые возможно пришли из контроллера) на экран. Обычно файл отображения содержит в себе элементы пользовательского интерфейса. В нем также допускается использование php для реализации простой-логики. К примеру, выставления проверок: «если пользователь имеет статус админ — тогда выводим этот кусок файла, иначе — другой». Следуя требованиям MVC в отображении должен находиться минимум кода логики приложения (для этого специально существует контроллер).

Заметка: В некоторой документации View называют «отображением», в некоторой — «представлением». Мне больше нравиться первый вариант. 

Вот пример простого отображения, которое служит для вывода меню на сайте:

<h1>меню</h1>
<a href='#'>пункт 1</a>
<a href='#'>пункт 2</a>
<?php if ($user['status'] == «admin»): ?>
     <a href='#'>меню админа</a>
<?php endif; ?>

Как вы видите это простой html код. Ничего сложного! В нем также я влепил проверку "является ли пользователь админом" (если да — тогда выводим дополнительный пункт меню).

Переменная $user может быть объявлена в этом же отображении, а может быть передана с контроллера.

Заметка: для того чтобы вывести отображение из контроллера — используется метод render(«название_отображения»). По умолчанию будет выведено на экран отображение с переданным названием, из папки : views/название_контроллера/название_отображения/

Если в контроллере Test написать $this->render('my_view_file') — файл отображения будет подгружаться из адреса protected/views/test/my_view_file/. Поэтому обычно для каждого контроллера в папке views создается своя папка, со своими отображениями.

Давайте используя уже полученные ранее знания, решим следующую задачу:

Пускай у нас есть таблица users (с полями: id, login, passwd). Зайдя по адресу localhost/admin/index/ на экране должна быть показана информация о пользователе с логином "admin".

Создаем модель для работы с таблицей users. Назавём её User.php и поместим по адресу protected/models:

<?php
class User extends CActiveRecord
{       
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }
    public function tableName()
    {
        // в нашем случае это таблица users
        return 'users';
    }
}

Теперь создадим контроллер который используя модель — получит данные пользователя «admin», и передаст их в отображение. Контроллер создаем в папке protected/controllers и называем AdminController.php :

<?php
class AdminController extends CController
{
    public function actionIndex()
    {
        // Проверяем есть ли такой пользователь в базе.
        // Если есть - сохраняем его данные в $user_info
        if ($user_info = User::model()->findByAttributes(array('login' => 'zolter'))) {
            $this->render('index', array(
                // передаем параметнную $user_info в отображение
                // в котором она будет доступна по имени - "$info"
                'info'    =>    $user_info,
            ));
        } else {
            die('нет такого юзера');           
        }
    }
}

Ну и осталось дело за малым, создаем отображением. Для этого в папке views создаем папку admin (согласно названию нашего контроллера). Теперь в папке admin создаем файл index.php (согласно названию экшинса который его вызывает) :

<pre>
     Id : <?php echo $info->id; ?>
     Логин: <?php echo $info->login; ?>
     Пароль: <?php echo $info->passwd; ?>
</pre>

При запуске localhost/admin/index вы должны увидеть на экране логин, пароль и id админа. (если не забыли предварительно создать его в таблице users).

Как это работает?

  1. Вы набрали localhost/admin/index тем самым обратились в контроллер Admin, и экшинс Index
  2. Далее начал работать код из actionIndex()
  3. Вы запросили из модели User данные, где логин равен значению «zolter». Т.к. Модель User связана с таблицей users — она сделала запрос в БД к этой таблице.
  4. После того как такие данные были найдены — методом render они были переданы в отображение index.php
  5. После этого на экран было показано отображением

Вывод..

Я не ставил перед собой цель описать весь функционал и возможности контроллера-модели-отображения. Надеюсь тем кто не понимал что такое MVC — стало немного понятнее.

Писал в спешке, надеюсь ничего не забыл. Если встретите ошибки в тексте — выделяйте их через Ctrl+Enter (буду очень благодарен).



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

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

  2. Я рад объявить о выпуске Yii Framework v1.0.6! next ... "Версия 1.0.6"

  3. Александр Макаров на страницах yiiframework.ru опубликовал перевод очень хорошего рецепта. Хочу заметит что материал будет очень полезен для тех, кто ... "Краткий справочник по валидации форм"

andy_s

Было сказано: Вторник, 21 Июль 2009

Читал в спешке, вроде всё понравилось, начинающим очень поможет понять хотя бы основные моменты. Отдельный плюс за описание MVC в контексте Yii :)

P.S. Не понимаю, почему вы пишите "экшинсы", а не "экшены". Экшинс - это уже множественное число (да и буква И спорная :))

[adm] zolter

Было сказано: Вторник, 21 Июль 2009

согласен. просто привык так :)
потом наверно поправлю, что б правильнее было :)

[guest] andead

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

очень доступно. спасибо!

[adm] zolter

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

Пожалуйста)
К сожалению, что то случилось с расширением которое должно подсвечивать синтаксис php. Постараюсь завтра исправить, то читать код наверное не приятно

[guest] Гость

Было сказано: Понедельник, 03 Август 2009

Просто и понятно, спасибо автору!!!!!!

EverCelt

Было сказано: Четверг, 20 Август 2009

вопрос по поводу контроллеров. развернул тестовое приложение testdrive:
виджетот mainmenu создаю меню
array('label'=>'Home', 'url'=>array('/site/index')),
array('label'=>'Contact', 'url'=>array('/site/contact')),
array('label'=>'Test', 'url'=>array('/site/test1'))...
но доступ все равно происходт вот так
http://www.yii.test/testdrive/index.php?r=site/contact
,a не http://www.yii.test/testdrive/site/contact
p.s. извиняюсь, если глупый вопрос:) или по невнимательности:)

EverCelt

Было сказано: Четверг, 20 Август 2009

версия 1.0.8

EverCelt

Было сказано: Четверг, 20 Август 2009

вопрос снят:) не до конца изучил доки

EverCelt

Было сказано: Четверг, 20 Август 2009

чтобы правильно выполнялось "localhost/site/index/ - вы обратились к контроллеру Site и его экшинсу index (actionIndex)"
необходимо изучить
http://www.yiiframework.ru/doc/guide/ru/topics.url
http://dbhelp.ru/how-to-remove-indexphp/page/

[guest] zolter

Было сказано: Пятница, 21 Август 2009

:)

Alexdamo

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

Почему контроллер не может найти свой view.
Есть контроллер TestController extends CController.
В папке views есть папка test.
И вот при вызове render() он не находит в ней view, а если в render прописать так: render ('test/index'), то находит. В контроллерах, созданных автоматически (таких как SiteController), все ОК.

[adm] zolter

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

Т.е. вы пишите:
$this->render('index') - не работает
А:
$this->render('test/index') - работает?

[adm] zolter

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

п.с. при вызове рендера всегда надо указывать какой файл вы хотите отобразить. т.е. для экшинса index в скобках render-а надо писать 'index', для test - писать render('test') и т.д.

Alexdamo

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

Все, разобрался. Дело было в том, что я создал в классе контроллера конструктор. Как только убрал конструктор, все заработало. Если используем конструктор в контроллере, то надо обязательно вызывать его родительский конструктор с указанием id контроллера. Тогда он находит свои views в нужной папке

Т.е. если контроллер TestingController, то конструктор:
{
parent::__construct('Testing');
}

Если конструктор нужен, конечно.
Вот еще один урок о том, что родительский конструктор надо не забывать вызывать.

[adm] zolter

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

Уву. бывает такое :)

[guest] Vic

Было сказано: Пятница, 05 Март 2010

Вроде бы всё не плохо, но только делать die() в контроллере -- верх неприличия.

[guest] zolter

Было сказано: Пятница, 05 Март 2010

Это мой подход, делайте echo :)

[guest] Гость

Было сказано: Среда, 07 Июль 2010

Все почитал вроде все понятно =)) Немогу до конца вкурить как же все таки использовать функции мускула по типу mysql_fetch_array и др. если не трудно помогите буду оч благодарен =))

[guest] wh1te

Было сказано: Вторник, 27 Июль 2010

Спасибо!

[guest] lastalert

Было сказано: Пятница, 30 Июль 2010

Отличная статья.
Автору спасибо =)

lavrenovnn

Было сказано: Среда, 11 Август 2010

Огромная благодарность автору!!! Читая доки, многое не понимал ... прочитав три ваши статьи ... особенно текущую - всё стало понятно!!! Теперь уии со мной!
Единственная заминка была с представлением (1.1.3), выдавал ошибку render - потому как нужен макет, заменив его на renderPartial - вывод без макета - работает отлично!

[guest] zolter

Было сказано: Среда, 11 Август 2010

Спасибо, очень рад что мои статьи все еще помогают :)
Надеюсь в скором времени разгребу с работой и продолжу писать

[guest] Darth_Ixis

Было сказано: Суббота, 28 Август 2010

Экшинсы...бррр)

А статья замечательная, лаконично написано :)

[guest] zolter

Было сказано: Суббота, 28 Август 2010

У мну свой диалект :)

[guest] Гость

Было сказано: Понедельник, 13 Сентябрь 2010

в примере где идет проверка существования логина admin в коде ты ищешь логин zolter ;)

[guest] zolter

Было сказано: Понедельник, 13 Сентябрь 2010

О точно, спасибо поправлю

[guest] Azariil

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

Одного не пойму - почему если вся логика работы с БД должна быть в Модели, то почему мы запросы к БД через AR делаем в контроллере? По идее за это все должна отвечать модель? Или я чегото недопонимаю?

[guest] Breeze

Было сказано: Воскресенье, 30 Январь 2011

Вот кое-что интересное по MVC принципы на примерах.
Помогает лучше понять суть как по мне:
1)http://chtivo.webhost.ru/articles/mvc.php
2)http://chtivo.webhost.ru/articles/mvc_rate.php

[guest] zolter

Было сказано: Понедельник, 31 Январь 2011

to Breeze
Действительно полезный материал и очень подробный. Спасибо!

[guest] Гость

Было сказано: Вторник, 15 Февраль 2011

Все сделал по примеру - выскакивает ошибка AdminController cannot find the requested view "index". Подскажите, что делать?

[guest] alex3d

Было сказано: Воскресенье, 20 Февраль 2011

Спасибо за статью! Блин... реклама девок в нижнем белье слева от статей явно не дает сконцентрироваться на материале.... :)))))))))))

[guest] Гость

Было сказано: Воскресенье, 15 Май 2011

Просто.... большое спасибо... в жопу всю эту официальную документацию, такое ощущение что они хотят тебя запутать, я думаю она будет полезна уже людям которые полностью в "теме". С удовольствием читаю дальше.... )))

[guest] Гость

Было сказано: Понедельник, 26 Сентябрь 2011

Хороший материал:) с официальной документации действительно тяжелова-то стартануть...

[guest] Гость

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

Большое спасибо автору за статью.

[guest] Гость

Было сказано: Четверг, 12 Январь 2012

Спасибо, друг! Просто без понтов объяснил суть, теперь смогу и сам что-то написать.

[guest] Гость

Было сказано: Четверг, 12 Январь 2012

неудобно читать зеленые замечания из-за того, что их нужно прокручивать

[guest] Гость

Было сказано: Четверг, 12 Январь 2012

$user_info = User::model()->findByAttributes(array('login' => 'zolter'));
Ну ладно - это очень простой запрос типа select * from user where login=zolter
А как быть со сложными запросами ?
Там где возвращается набор записей, где они должны быть как-то упорядочены, где накладываются условия из других таблиц...

[guest] zolter

Было сказано: Четверг, 12 Январь 2012

Да очень просто, тогда будет не findBy, а findAllBy. т.е.:

$user_info = User::model()->findAllByAttributes(array('status' => 1), array('order' => 'id DESC'))

т.е. это селект всех пользователей со статусом 1 и отскортированых по полю id

[guest] Гость

Было сказано: Воскресенье, 15 Январь 2012

ну хорошо, это
select * from user where status = 1 order by id desc

а как будет, например, слудующий запрос -
SELECT groups.id, groups.name, users.name
FROM groups
JOIN users ON users.id = groups.owner
WHERE archived = 1 AND groups.owner = $owner
ORDER BY groups.name, users.name ASC

? ;)

[guest] zolter

Было сказано: Воскресенье, 15 Январь 2012

$user = Yii::app()->db->createCommand()
->select('g.id, g.name, u.name')
->from('groups g')
->join('users u', 'u.id = g.owner')
->where('u.archived=1 AND g.owner=:owner', array(':owner'=>$owner))
->queryRow();

разве не круто?

[guest] Гость

Было сказано: Воскресенье, 15 Январь 2012

гм...
наверное это действительно круто,но я че-то синтаксиса не понял ;)
как это работает createcommand()->select()->from()->join()->where()->queryrow() ?!
А нельзя ли как-нибудь просто использовать чистый sql без всяких извращений ? ;)
чтобы не утомлять вас своими вопросами,может бытьподскажете, нет ли какой статейки для чайников, популярно описывающей как пользоваться этой расчудесной activerecord ?

[guest] Гость

Было сказано: Воскресенье, 15 Январь 2012

и все-таки задам еще один вопрос по поводу приведенной вами конструкции createcommand.
- где здесь модели для таблиц users и groups и как обращаться к полям результирующего набора данных ?

$user->g.id
$user->g.name
$user->u.name
?

[guest] zolter

Было сказано: Воскресенье, 15 Январь 2012

Запрос который я привел выше - не требует наличия моделей для этих таблиц. Я просто привел пример коснтруктора запросов который позволяет их удобно делать. Если хотите писать чистым SQL кодом - пожалуйста, такая возможность так же существует:

$sql="SELECT username, email FROM tbl_user";
$dataReader=$connection->createCommand($sql)->query();

По сути красота AR используется только для CRUD операций. Для чего то более сложного - либо createCommand либо через with и тп.

Хорошие статьи - в документации:

http://www.yiiframework.com/doc/guide/1.1/ru/database.dao

http://www.yiiframework.com/doc/guide/1.1/ru/database.query-builder

http://www.yiiframework.com/doc/guide/1.1/ru/database.arr

[guest] zolter

Было сказано: Воскресенье, 15 Январь 2012

Синтаксис ->select()->from()->join()->where()->queryrow() это число для удобства и читаемости. Как уже привел выше - можно и руками писать запросы :)

[guest] UserController

Было сказано: Вторник, 07 Февраль 2012

Спасибо за статью

[guest] Viktor

Было сказано: Среда, 15 Февраль 2012

Ребята, есть вопрос...
Как можно уменьшить вес всего заводского пакета yii фреймворка? Уж больно он тяготит. Я имею ввиду, что не нужного можно поудалять в этом пакете, пока сам увидел, что можно удалить папку requirements(если знаеш, что всё что тебе нужно поддерживается на хосте),demos(примеры работы фреймворка), однако основной вес всё же лежит в папке framework. Стоит ли оттуда что-то удалять, или впринцепе там всё необходимо на стадии разработки как для начинающего, так и для продвинутого разработчика? Сильно ли экономят время все эти генераторы моделей, модулей и т.п.? Что стоит оставить для начинающего и что можно поудалять поняв что и как функционирует.

[adm] zolter

Было сказано: Среда, 15 Февраль 2012

Если ты только начинаешь - лучше используй полный комплект.
Там все достаточно связано, так что без должного знания не найдешь что выкидывать )) да и инклуды там умные, так что yii не подгружает не нужные файлы во время работы и на скорость не влияюет

[guest] Viktor

Было сказано: Четверг, 16 Февраль 2012

Просто достаточно долго кидаются все эти 18Мб на хост, а если ещё и через нетбинс работать с удалёнными данными, то поначалу тоже ведь надо сначала подгрузить все файлы с хоста в проект нетбианса. Конечно, можно немного схитрить с созданием проекта в нетбиансе - заранее создать проект с исходным кодом приложения и фрейма на компьютере, закинуть обычным способом все файлы на хост и далее просто привязать проект к исходникам на хосте, да бы не заставлять загружать все файлы с хоста, что очень долго. Может быть у кого-то есть более лёгкие и интересные способы работы с таким объёмом, когда начинаеш заниматься каким-нибудь проектом?

[guest] Гость

Было сказано: Четверг, 19 Апрель 2012

Привет, большое спасибо за данные статьи. Лучшего по yii для начинающих я не находил (да наверное и не существует)!

[guest] Сергей

Было сказано: Четверг, 19 Апрель 2012

А подскажите пожалуйста почему не получается обратиться к конкретному контроллеру или экшену как в примере.
То есть работает только localhost/ (в результате чего выполняется контроллер по умолчанию, который можно выставлять в config/main.php и его индекс экшен). А уже например localhost/hello/ или localhost/hello/author не работает.
Последовательность действий как в примере старался соблюдать.

[guest] zolter

Было сказано: Четверг, 19 Апрель 2012

А в каком смысле не работает? Что пишет?
Скорее всего вы не скопировали htaccess

[guest] Сергей

Было сказано: Четверг, 19 Апрель 2012

Не работает в том смысле, что Денвер не находит такого URL.
Вы имеете ввиду htaccess, о котором говорится в статье "Как получить красивые URL"?
Пока что получилось таким образом
http://localhost/index.php?r=hello/author

[guest] zolter

Было сказано: Пятница, 20 Апрель 2012

Вот такой htaccess попробуйте в корне вашего сайта:

AddDefaultCharset utf-8
AddCharset utf-8 *

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d

# otherwise forward it to index.php
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

[guest] Гость

Было сказано: Четверг, 26 Апрель 2012

Автор, научитесь мягкий знак расставлять пожалуйста.

[adm] zolter

Было сказано: Четверг, 26 Апрель 2012

Ради вас - все что угодно

[guest] Сергей

Было сказано: Понедельник, 21 Май 2012

Добавил приведенный htaccess.

Теперь что на http://localhost/site/index/, что на http://localhost/site/author/ получается один и тот же результат:
Привет! Это actionIndex()

Контроллер как у Вас:
class SiteController extends CController
{
public function actionIndex()
{
die ("Привет! Это actionIndex()");
}
public function actionAuthor()
{
die ("Привет! Это actionAuthor()");
}
}

[guest] Гость

Было сказано: Вторник, 29 Май 2012

отображения будет подгружаться из адреса protected/views/test/my_view_file/.

Я конечно не уверен, но мне почему-то кажется что должно быть так:
отображения будет подгружаться из адреса protected/views/test/my_view_file.php

[guest] mukolla

Было сказано: Вторник, 26 Июнь 2012

я повторюсь уже сказаному выше коментарию- очень большой респект за описание MVC в контексте Yii. Супер!!!

[guest] Гость

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

замечательно описанно, стал представлять как работает MVC.

[guest] Sadr

Было сказано: Среда, 14 Ноябрь 2012

Не мог понять как используется модель.
"Реально" все стало понятно!
Спасибо.

[guest] klon

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

а если хочу вместо

$user_info = User::model()->findByAttributes(array('login' => 'zolter'));

получить просто все значения таблицы????? помогите
$user_info = User::model()->findall()
прокатит?

[guest] zolter

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

Конечно

[guest] Гость

Было сказано: Воскресенье, 02 Декабрь 2012

спс

[guest] Гость

Было сказано: Пятница, 21 Декабрь 2012

Спасибо за статью, класс! Что же я раньше не интересовался, меня из за Yii не взяли на работу))))

[guest] Гость

Было сказано: Воскресенье, 17 Февраль 2013

по адресу localhost/user/index/ у меня выводится ошибка ((((

[guest] Гость

Было сказано: Вторник, 19 Февраль 2013

Спасибо.

[guest] Гость

Было сказано: Вторник, 23 Апрель 2013

Разжевано как для тупых, до меня дошло раза с третьего.
Спасибо автор.
Правда непонятно мне в этом yii - как организовать работу с файлами, когда модель должна частично лежать в бд, частично в файлах.

[guest] Гость

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

Спасибо, автор. Теперь для MVC не такой страшный монстр каким казался ранее. Будем изучать дальше.

[guest] Гость

Было сказано: Вторник, 17 Декабрь 2013

Да, написано довольно просто и понятно!!! Здорово, что есть такие люди готовые донести свой опыт другим посредством простоты и точности, спасиб.

[guest] andrey

Было сказано: Вторник, 17 Декабрь 2013

Не хватает кнопочки On-Top! Статьи для начинающих отличные.

[guest] Гость

Было сказано: Четверг, 20 Февраль 2014

Спасибо большое, очень хорошая статья. Первая статья, благодаря которой я наконец то начинаю понимать саму идею фреймвокера Yii (до этого я не имел дело ни с одним фреймвокером для WEB). Написано очень доступно, а главное очень просто и с самого-самого начала.

[guest] Гость

Было сказано: Пятница, 04 Апрель 2014

В статье было написано следующее: Поэтому обычно для каждого контроллера в папке views создается своя папка, со своими отображениями.

Это означает что будет куча папок в views раз на каждый контроллер создается своя папка и свое отображение? Не очень как-то плодить папки и файлы мне кажется таким макаром...

[guest] Гость

Было сказано: Вторник, 02 Февраль 2016

klass spasibo avtoru !!!

[guest] ОСА

Было сказано: Воскресенье, 26 Февраль 2017

Поясните пожалуйста:
>>> "=__CLASS__" - чего это? Какая-то константа или авто-подстановка?
>>> "таблица user" - что будет если она не существует?
>>> "$user['status'] == «admin»" - что будет если нет колонки status? И разве такие кавычки для строковой константы канают? А регистр в toLowerCase прогнать не пригодится?
>>> "'info' => $user_info," - зачем тама запятая в конце?
Спасибо!

[guest] Гость

Было сказано: Четверг, 27 Апрель 2017

Вкуснейший экзотический плод - мангустин, стал настоящим открытием в диетологии!
Он содержит РЕКОРДНОЕ количество полезных веществ, стимулирующих активное жиросжигание и снижающих вес!
Сироп мангустина растопит до 10 кг жира за 2 недели!
Спаситесь от ожирения и сократите риск инфаркта, диабета и гипертонии на 89%.
Перейти на сайт: http://mangystin.bxox.info/

[guest] Гость

Было сказано: Воскресенье, 30 Апрель 2017

Почитай здесь
http://phpjs.ru/2017/03/06/mvc-приложение-на-php-часть-6-crud-mapping/

[guest] Гость

Было сказано: Воскресенье, 07 Май 2017

Этот чай уникального пурпурного цвета, вот уже более шести тысяч лет выращивается в самых высоких горах на земле - Непале и Тибете и используется в разнообразных медицинских целях, а сейчас засчёт огромного набора полезных свойств заслуженно набирает популярность во всём мире.
Пурпурный чай - это мощнейший жиросжигатель, который к тому же препятствует возникновению новых отложений, превращая жир в энергию.
Официальный сайт: http://pur.bxox.info

[guest] Гость

Было сказано: Вторник, 16 Май 2017

АЛКОВЕРИН АКТИВИРУЕТ РЕЖИМ АЛКОГОЛЬНОГО ОТТОРЖЕНИЯ
С ALCOVIRIN выпить ПРОСТО НЕ УДАСТСЯ!

Это первый биогенный растительный комплекс, способствующий выработке непереносимости алкоголя при совместном приеме капель и спиртных напитков, вызывая тошноту и его полное отторжение организмом!

Кроме того, он оказывает мощное оздоровительное действие, устраняя алкогольную интоксикацию и способствуя восстановлению правильной работы органов и систем.

Официальный сайт: http://alcovirin.bxox.info

[guest] Гость

Было сказано: Воскресенье, 23 Июль 2017

Get instant free access to <a href=http://7e7.pw/race.html>our exclusive library</a> of one-on-one training courses, tutorials in HD video and the same software used by the top traders all over the world.

[guest] Гость

Было сказано: Среда, 30 Август 2017

Alternatively one can merely buy from the web, mobile phone monitoring software program.

Visit site: http://audiojungle.net/item/christmas-piano/19056234/

http://audiojungle.net/user/momentumofmelody/portfolio?ref=MomentumOfMelody
http://audiojungle.net/item/piano-inspiration/18285725?ref=MomentumOfMelody
http://audiojungle.net/user/ie_sound/portfolio?ref=IE_Sound
http://audiojungle.net/item/motivation-ambient-kit/19508793?ref=IE_Sound

[guest] Гость

Было сказано: Суббота, 23 Сентябрь 2017

http://20mg-levitraforsale.com/ - 20mg-levitraforsale.com.ankor <a href="http://usbuy-ventolin.com/">usbuy-ventolin.com.ankor</a> http://generic-levitracheapest-price.com/

[guest] Гость

Было сказано: Суббота, 23 Сентябрь 2017

http://20mg-levitraforsale.com/ - 20mg-levitraforsale.com.ankor <a href="http://usbuy-ventolin.com/">usbuy-ventolin.com.ankor</a> http://generic-levitracheapest-price.com/

[guest] Гость

Было сказано: Суббота, 23 Сентябрь 2017

http://20mg-levitraforsale.com/ - 20mg-levitraforsale.com.ankor <a href="http://usbuy-ventolin.com/">usbuy-ventolin.com.ankor</a> http://generic-levitracheapest-price.com/

[guest] Гость

Было сказано: Суббота, 23 Сентябрь 2017

http://20mg-levitraforsale.com/ - 20mg-levitraforsale.com.ankor <a href="http://usbuy-ventolin.com/">usbuy-ventolin.com.ankor</a> http://generic-levitracheapest-price.com/

[guest] Гость

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

Добрый день!
Ребята,две недели назад заказывала себе реплику Iphone X 2017 года,заказ пришёл через 6 дней. Вот я решила оставить отзыв!
Оплата полностью происходит на почте!
За время моего использования, около недели,никаких недочетов не заметила, ни чуть не тупит! Очень плавно работает!!! Стильный дизайн, подчеркивающий статус владельца! У моих друзей прибавилось поводов для зависти)) Если телефон не понравится, то есть возможность вернуть телефон обратно, в течении 14 дней! Гарантия на телефон один год. Камера супер, фотки просто класс!!! Беспроводные наушники, не боится влаги, работает Очень быстро!!! Очень красивый. Так же в комплекте пришло защитное стекло и чехол подчеркивающий цвет телефона!
Так что ребята покупайте тут и не бойтесь!

<a href=http://shopmaybay.ru/iphoneX-1/?ref=123639&lnk=1579211>iphone x купить +в сша. Подробности по ссылке...</a>
<a href=http://shopmaybay.ru/iphoneX-1/?ref=123639&lnk=1579211><img>https://cnet2.cbsistatic.com/img/SVArV0NpzrZzcyVYNgybsAB_5e8=/770x433/2017/09/12/61096602-8e41-41d5-a63d-0ed945435e49/iphonexfl.jpg</img></a>
Эти телефоны пользуются заслуженной популярностью во всем мире. К сожалению, зачастую цена на продукцию компании Apple может быть достаточно высокой, и далеко не каждый пользователь, решивший сменить своего мобильного любимца, может позволить себе данный аппарат. Тут и приходят к нам на выручку наши тайваньские друзья. Телефоны iPhone X, производимые в Тайване, гарантируют покупателям превосходные возможности, а ценник таких моделей отличается в разы, и, конечно же, только в нижнюю сторону.

Мастера из Тайваня создали самую точную копию iPhone X, которую вы можете приобрести прямо сейчас!
<a href=http://shopmaybay.ru/iphoneX-1/?ref=123639&lnk=1579211><img>https://timedotcom.files.wordpress.com/2017/09/iphone-x-back.jpg?w=560</img></a>
Схема разработки реплики Айфона X достаточно простая: сведения с китайских заводов, занимающихся производством фирменного смартфона, с успехом «перетекают» в Тайвань, где их используют местные мастера. А потому любители передовых гаждетов уже сегодня имеют возможность купить копию iPhone X.

Покупая реплику iPhone X на нашем сайте, вы становитесь обладателем мощного девайса, внешне практически неотличимого от оригинала. Здесь все точно скопировано с брендового Айфона X – и крупный дисплей с защитным стеклом, и качественный пластиковый корпус, и передовое оснащение.

<a href=http://shopmaybay.ru/iphoneX-1/?ref=123639&lnk=1579211><img>https://cdn.arstechnica.net/wp-content/uploads/2017/09/maxresdefault-800x450.jpg</img></a>
Закажи свой iPhone X со скидкой 53%! Вот ссылка <a href=http://shopmaybay.ru/iphoneX-1/?ref=123639&lnk=1579211>Iphone X</a>

[guest] Гость

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

Ребята, две недели назад заказывала себе реплику "Iphone X",заказ пришёл через 6 дней. Вот я решила оставить отзыв!
Купила его здесь <a href=https://vk.com/nudiscoindiedance>www.vk.com/nudiscoindiedance</a>
(всего за 11990 тысяч рублей) Оплата полностью происходит на почте!
За время моего использования, около недели,никаких недочетов не заметила, ни чуть не тупит! Очень плавно работает!!! Стильный дизайн, подчеркивающий статус владельца! У моих друзей прибавилось поводов для зависти)) Если телефон не понравится, то есть возможность вернуть телефон обратно, в течении 14 дней! Гарантия на телефон один год. Камера супер, фотки просто класс!!! Беспроводные наушники, не боится влаги, работает Очень быстро!!! Очень красивый. Так же в комплекте пришло защитное стекло и чехол подчеркивающий цвет телефона!
Так что ребята покупайте тут и не бойтесь!

<a href=https://vk.com/nudiscoindiedance><img>https://i03.kanobu.ru/r/f08606a092ea5be5e96f3a985e17f154/1040x-/u.kanobu.ru/editor/images/48/2035f532-aa6b-4eb3-9131-47b99acc093a.jpg</img></a>

Эти телефоны пользуются заслуженной популярностью во всем мире. К сожалению, зачастую цена на продукцию компании Apple может быть достаточно высокой, и далеко не каждый пользователь, решивший сменить своего мобильного любимца, может позволить себе данный аппарат. Тут и приходят к нам на выручку наши тайваньские друзья. Телефоны iPhone X, производимые в Тайване, гарантируют покупателям превосходные возможности, а ценник таких моделей отличается в разы, и, конечно же, только в нижнюю сторону.

Мастера из Тайваня создали самую точную копию iPhone X, которую вы можете приобрести прямо сейчас!

<a href=https://vk.com/nudiscoindiedance><img>http://i.playground.ru/i/81/39/62/00/blog/content/z7zy4pni.png</img></a>

Схема разработки реплики Айфона X достаточно простая: сведения с китайских заводов, занимающихся производством фирменного смартфона, с успехом «перетекают» в Тайвань, где их используют местные мастера. А потому любители передовых гаждетов уже сегодня имеют возможность купить копию iPhone X.

Покупая реплику iPhone X на нашем сайте, вы становитесь обладателем мощного девайса, внешне практически неотличимого от оригинала. Здесь все точно скопировано с брендового Айфона X – и крупный дисплей с защитным стеклом, и качественный пластиковый корпус, и передовое оснащение.


<a href=https://vk.com/nudiscoindiedance><img>https://mirror-world.ru/wp-content/uploads/2017/09/13e5125099597f1e3a7c52d050b6cd10.jpg</img></a>

<a href=http://shopmaybay.ru/iphoneX-1/?ref=123639&lnk=1579211><img>http://udomsk.com/files/images/order.png</img></a>

[guest] Гость

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

Диета. Минус 12 кг за 2 недели.
Не скажу, что слишком часто, но у нас, у женщин,такое бывает. Закружившись в круговерти земных пролем и забот, вдруг вспоминаем, что близится какое-то важное событие и остаётся до него всего ничего - 2 недели. Что делать? Есть на примете платье, но в него при нынешних габаритах не влезть никак. Ну что ж, нужна Диета. Минус 12 кг за 2 недели - задача не из лёгких, но при необходимости мы, женщины, можем всё. И не такие вещи брали! <a href=http://prikolex.ru/condiet/?xid=ysiH2wGy>Подробней по ссылке...</a>


<a href=http://prikolex.ru/condiet/?xid=ysiH2wGy><img>https://kedem.ru/photo/articles/2016/10/dieta-minus-12-kg-za-2-nedeli-01.jpg</img></a> <a href=http://prikolex.ru/condiet/?xid=ysiH2wGy><img>https://kedem.ru/photo/articles/2016/10/dieta-minus-12-kg-za-2-nedeli-03.jpg</img></a>

[guest] Гость

Было сказано: Понедельник, 16 Октябрь 2017

Диета. Минус 12 кг за 2 недели.
Не скажу, что слишком часто, но у нас, у женщин,такое бывает. Закружившись в круговерти земных пролем и забот, вдруг вспоминаем, что близится какое-то важное событие и остаётся до него всего ничего - 2 недели. Что делать? Есть на примете платье, но в него при нынешних габаритах не влезть никак. Ну что ж, нужна Диета. Минус 12 кг за 2 недели - задача не из лёгких, но при необходимости мы, женщины, можем всё. И не такие вещи брали! <a href=http://prikolex.ru/condiet/?xid=ysiH2wGy>Подробней по ссылке...</a>


<a href=http://prikolex.ru/condiet/?xid=ysiH2wGy><img>https://kedem.ru/photo/articles/2016/10/dieta-minus-12-kg-za-2-nedeli-01.jpg</img></a> <a href=http://prikolex.ru/condiet/?xid=ysiH2wGy><img>https://kedem.ru/photo/articles/2016/10/dieta-minus-12-kg-za-2-nedeli-03.jpg</img></a>

[guest] Гость

Было сказано: Вторник, 17 Октябрь 2017

Диета. Минус 12 кг за 2 недели.
Не скажу, что слишком часто, но у нас, у женщин,такое бывает. Закружившись в круговерти земных пролем и забот, вдруг вспоминаем, что близится какое-то важное событие и остаётся до него всего ничего - 2 недели. Что делать? Есть на примете платье, но в него при нынешних габаритах не влезть никак. Ну что ж, нужна Диета. Минус 12 кг за 2 недели - задача не из лёгких, но при необходимости мы, женщины, можем всё. И не такие вещи брали! <a href=http://prikolex.ru/condiet/?xid=ysiH2wGy>Подробней по ссылке...</a>


<a href=http://prikolex.ru/condiet/?xid=ysiH2wGy><img>https://kedem.ru/photo/articles/2016/10/dieta-minus-12-kg-za-2-nedeli-01.jpg</img></a> <a href=http://prikolex.ru/condiet/?xid=ysiH2wGy><img>https://kedem.ru/photo/articles/2016/10/dieta-minus-12-kg-za-2-nedeli-03.jpg</img></a>

[guest] Гость

Было сказано: Понедельник, 23 Октябрь 2017

Ребята,две недели назад заказывала себе реплику Iphone7,заказ пришёл через 6 дней. Вот я решила оставить отзыв!
Купила его здесь <a href=http://shadow-world.maglan.net/forum/viewtopic.php?f=56&t=87885>Iphone7 реплика</a> Оплата полностью происходит на почте!
За время моего использования, около недели,никаких недочетов не заметила, ни чуть не тупит! Очень плавно работает!!! Стильный дизайн, подчеркивающий статус владельца! У моих друзей прибавилось поводов для зависти)) Если телефон не понравится, то есть возможность вернуть телефон обратно, в течении 14 дней! Гарантия на телефон один год. Камера супер, фотки просто класс!!! Беспроводные наушники, не боится влаги, работает Очень быстро!!! Очень красивый. Так же в комплекте пришло защитное стекло и чехол подчеркивающий цвет телефона!
Так что ребята покупайте тут и не бойтесь!
Вот ссылка <a href=http://shadow-world.maglan.net/forum/viewtopic.php?f=56&t=87885>Iphone7 реплика</a>

<img>https://besplatka.ua/aws/9/74/02/50/app/525f6b339e57.jpg</img>

[guest] Гость

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

BONGACAMS

SHE
WILL DO
ANYTHING
YOU WANT!

[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]ENTER NOW[/url]


[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4][img]http://camsv39.toystds.org/topcams_ru3.jpg[/img][/url]

[guest] Гость

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

LUXURY ASTAFYEVA IN BIKINI WAS CARRYING OUT TO THE ISLAND SHELL More to read here:[url=https://www.youtube.com/watch?v=FEOwPB_uL6M&t=160s]PLAY BOY[/url]

[url=https://www.youtube.com/watch?v=FEOwPB_uL6M&t=160s][img]https://pmcdeadline2.files.wordpress.com/2015/07/youtube-logo.png?w=605[/img][/url]

[guest] Гость

Было сказано: Среда, 01 Ноябрь 2017

Ребята, две недели назад заказывала себе реплику Iphone X,заказ пришёл через 6 дней. Вот я решила оставить отзыв!
Купила его здесь http://10x-apple.ru Оплата полностью происходит на почте!
За время моего использования, около недели,никаких недочетов не заметила, ни чуть не тупит! Очень плавно работает!!! Стильный дизайн, подчеркивающий статус владельца! У моих друзей прибавилось поводов для зависти)) Если телефон не понравится, то есть возможность вернуть телефон обратно, в течении 14 дней! Гарантия на телефон один год. Камера супер, фотки просто класс!!! Беспроводные наушники, не боится влаги, работает Очень быстро!!! Очень красивый. Так же в комплекте пришло защитное стекло и чехол подчеркивающий цвет телефона!
Так что ребята покупайте тут и не бойтесь!
Вот ссылка: http://10x-apple.ru


[img]https://telegraf.com.ua/files/2017/10/1508855633_iphone-x.jpg[/img][/url]

[guest] Гость

Было сказано: Среда, 01 Ноябрь 2017

Ребята, две недели назад заказывала себе реплику Iphone X,заказ пришёл через 6 дней. Вот я решила оставить отзыв!
Купила его здесь http://10x-apple.ru Оплата полностью происходит на почте!
За время моего использования, около недели,никаких недочетов не заметила, ни чуть не тупит! Очень плавно работает!!! Стильный дизайн, подчеркивающий статус владельца! У моих друзей прибавилось поводов для зависти)) Если телефон не понравится, то есть возможность вернуть телефон обратно, в течении 14 дней! Гарантия на телефон один год. Камера супер, фотки просто класс!!! Беспроводные наушники, не боится влаги, работает Очень быстро!!! Очень красивый. Так же в комплекте пришло защитное стекло и чехол подчеркивающий цвет телефона!
Так что ребята покупайте тут и не бойтесь!
Вот ссылка: http://10x-apple.ru


[url=http://10x-apple.ru][img]https://telegraf.com.ua/files/2017/10/1508855633_iphone-x.jpg[/img][/url]

[guest] Гость

Было сказано: Воскресенье, 05 Ноябрь 2017

На сегодняшний день человек собирается пользоваться надежной техникой, поэтому купить оптимальный смартфон для него – отнюдь не бездумная растрата финансов, но необходимость. На сегодняшний день в продаже присутствуют самые популярные и различные по своим параметрам устройства, которые позволяют не просто общаться, но и полноценно действовать, а также развлекаться в любое время. Прежде чем приобретать смартфон, самое главное обращать пристальное внимание на последующие характеристики: материал, из которого исполнен корпус; габариты устройства; диагональ экрана; качество звука и видео; показатели мощности процессора; величина встроенной памяти и допустимость ее увеличения; возможности мультимедиа. Цену также необходимо принимать к сведению, так как она существенна для сохранения бюджета. Целесообразнее всего заказать смартфон в инет-магазине, так как именно здесь минимальные наценки, зачастую проводятся акции, распродажи, частенько действуют специальные предложения. Наш веб-магазин смартфонов реализует обширный ассортимент устройств с диагональю экрана 4" и больше, разрешением экрана 960x560, 1280x720, 2560x1440 и т. д. Мы готовы предоставить возможность выбора торговых брендов и марок, отталкиваясь из финансовых возможностей конкретного клиента. У нас имеется продукция таких производителей: Xiaomi, Samsung, Meizu, Lenovo, Iphone и множество других. Кроме того можно получить развернутую консультацию специалистов. В случае, если посетитель недостаточно уверенно ориентируется в устройствах, сотрудники онлайн-магазина несомненно помогут подобрать девайс, оптимально соответствующую запросам и статусу заказчика. Именно поэтому, размышляя, где приобрести смартфон, нужно обращать внимание на возможность покупки в Сети интернет, так как тут цена и надежность, исполнение и качество не просто сбалансированы, но и представлены в максимально выгодном для пользователя свете. Удобство покупки через Интернет состоит также и в том, что покупатель не зависит от погодных условий за окном, может не отрываться от дел, ему не важно время суток, так как он может оформить заказ, не выходя из офиса или собственной уютной квартиры.Современный человек собирается пользоваться надежной техникой, по этой причине приобрести хороший смартфон для него – не несерьёзная растрата средств, но необходимость. На данный момент в продаже есть самые престижные и различные по своим параметрам устройства, которые позволяют не просто разговаривать, но и полноценно трудиться, а также развлекаться в любое свободное время. Прежде чем заказывать смартфон, имеет важное значение обращать пристальное внимание на последующие характеристики: материал, из которого исполнен корпус; размер устройства; размер экрана; качество звука и видео; параметры мощности процессора; величина встроенной памяти и допустимость ее увеличения; возможности мультимедиа. Стоимость также необходимо принимать во внимание, так как она очень важна для сохранения бюджета. Целесообразнее всего приобрести смартфон в веб-магазине, так как именно здесь наименьшие наценки, часто проводятся акции, продажи по сниженной цене, довольно часто действуют специальные предложения. Наш онлайн-магазин смартфонов реализует обширный ассортимент устройств с размером диагонали экрана 4" и более, разрешением экрана 960x560, 1280x720, 2560x1440 и т. д. Мы готовы предоставить возможность подбора брендов и моделей, исходя из финансовых возможностей конкретного покупателя. У нас представлена продукция следующих производителей: Xiaomi, Samsung, Meizu, Lenovo, Iphone и множество других. Дополнительно сможете получить детальную консультацию специалистов. Если посетитель недостаточно уверенно ориентируется в устройствах, работники инет-магазина посодействуют правильно выбрать марку, оптимально отвечающую потребностям и статусу заказчика. В связи с этим, раздумывая, где купить смартфон, необходимо особенно обратить пристальное внимание на возможность покупки в Интернете, так как здесь стоимость и надежность, исполнение и качество не просто сбалансированы, но и имеются в максимально интересном для владельца свете. Комфорт приобретения через Интернет заключается кроме того и в том, что заказчик не зависит от погодных условий за окошком, сможет не отрываться от дел, ему не имеет важное значение время суток, так как он сможет сформировать заказ, не выходя из офиса или собственной уютной квартиры.


[url=https://bbl.com.ua/smartfony-tv-elekronika/telephony/smartfony/homtom-mobile/]купить телефон homtom в украине[/url]

[guest] Гость

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

http://www.wikiprofile.org/wiki/User:FreemanWingate
http://bakeryhub.org/forums/profile/verlenebur
http://www.katalogi.ksa.pl/index.php?a=stats&u=jettauxp7253
https://forum.interiorscape.com/index.php?a=member&m=615021
http://www.flutrack.net/__media__/js/netsoltrademark.php?d=d.bigatel.info
http://www.carlacrews.com/__media__/js/netsoltrademark.php?d=Navilleauction.auctionserver.net%2Fview-auctions%2Fcatalog%2Fid%2F81%2Flot%2F1538%2F%3Furl%3Dhttps%3A%2F%2Fwww.katalogi.ksa.pl%2Findex.php%3Fa%3Dstats%26u%3Dbellelem773
http://www.gameover99.com/profile/rollandtoh2
http://www.redaxiom.com/user.php?login=jonathanre
http://krasikov.info/redir.php?link=b.bigatel.info
http://swtennis.com/__media__/js/netsoltrademark.php?d=Bhoke.com%2F__media__%2Fjs%2Fnetsoltrademark.php%3Fd%3Dwww.katalogi.ksa.pl%2Findex.php%3Fa%3Dstats%26u%3Dstantonabate
http://www.abouttestbuilder.com/__media__/js/netsoltrademark.php?d=agopex-gmbh.ohmes.info
http://okvet.com/__media__/js/netsoltrademark.php?d=cirrofoll.hceap.info
http://seeksbeaks.com.au/?p=1383
http://wiki.insanityflyff.com/wiki/index.php/User:AlexandriaVasque
http://senecahelicopters.com/__media__/js/netsoltrademark.php?d=labs.moip.com.br%2Fforum%2Fmember.php%3Fu%3D123222-GuyKnox646


https://www.cpagrip.com/show.php?l=0&u=27708&id=13091
https://www.cpagrip.com/show.php?l=0&u=27708&id=12864
https://www.cpagrip.com/show.php?l=0&u=27708&id=12992
https://www.cpagrip.com/show.php?l=0&u=27708&id=12959
https://www.cpagrip.com/show.php?l=0&u=27708&id=12424
https://www.cpagrip.com/show.php?l=0&u=27708&id=11913
https://www.cpagrip.com/show.php?l=0&u=27708&id=12833
https://www.cpagrip.com/show.php?l=0&u=27708&id=12363
https://www.cpagrip.com/show.php?l=0&u=27708&id=12393
https://www.cpagrip.com/show.php?l=0&u=27708&id=11318
https://www.cpagrip.com/show.php?l=0&u=27708&id=12386
https://www.cpagrip.com/show.php?l=0&u=27708&id=12292
https://www.cpagrip.com/show.php?l=0&u=27708&id=10783
https://www.cpagrip.com/show.php?l=0&u=27708&id=12039
https://www.cpagrip.com/show.php?l=0&u=27708&id=11298


http://www.la-ac.net/index.php?option=com_k2&view=itemlist&task=user&id=217579
http://www.tobiaextreme.com/component/k2/itemlist/user/429882
http://www.petrpalous.cz/component/k2/itemlist/user/430617
http://www.isovietnam.vn/index.php?option=com_k2&view=itemlist&task=user&id=254669
http://www.brainsurgeonsdiet.com/index.php?option=com_k2&view=itemlist&task=user&id=189008


http://www.moykrest.ru/

[guest] Гость

Было сказано: Вторник, 12 Декабрь 2017

[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]v she's dating the gangster settings[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]nigerian dating blog toronto[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]kameral? vip[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]speed dating events san francisco earthquake[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]craigslist dating in holland michigan quarterbacks[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]cerca persone pagine bianche[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]4 amici al bar livorno[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]6 months casual dating hamburg[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]il mondo di patty 2 amicizie tradimenti e bugie parte 2[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]cerco una chat gratis e senza registrazione[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]dating 101 pdf online maken[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]the rules college dating[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]who is i love new york dating now[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]dating japanese prints york[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]dating an older german man weert[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]dating rules from my future self online subtitrat online[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]radiometric dating fails cheezburger[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]6 dating deal breakers yard yorkshire[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]mugla arkadas net[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]i'm dating the ice princess book 2 wattpad verwijderen[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]dating over 40 bobbi palmer obituary[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]best dating apps in nyc[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]forty days of dating goes hollywood ebay[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]dating 101 pdf viewer linux[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]how to create a profile for online dating[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]que veut dire travailler en 2 8[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]erkek arkadas arayan bayanlar malatya[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]winnipeg dating over 40 blogs[/url]
[url=http://first-secret-affair2.org/?u=1zdp80z&o=0kmk8z4]dating coach berlin reinickendorf[/url]

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


Код:
Имя: