DbHelp.ru
Маленький Yii блог
Комментарии
Гость: комент
Гость: wahaha
zolter: Друпал на Yii? ))
nastia: http://drupal.org/
JB: Да там просто ад)) мне всего 3 значения нужно чтобы выпадало, все равно спасибо)...



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

Шаг 5: Контроллер Д/З

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

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

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


Yii Framework Blog img http://dbhelp.ru3 Рассмотрим правильный вариант решения задачи поставленной в статье "Шаг 5: Контроллер".

---

Тем кто читает все статьи за один раз и не старается выполнять упражнения самостоятельно я искрение сочувствую. Прошу вас еще раз пересмотреть свое отношение к познанию материала и все таки попробовать посидеть N-ое кол-во времени и самостоятельно пораскинуть мозгами, учитывая что все материалы для решения вы уже получили.

Тем кто выполнил упражнение своими силами и теперь хочет сверится с моим вариантом - прошу читать дальше.

Первым делом я открыл phpMyAdmin (обычно этот скрипт для удобной работы с базой уже установлен у вас на хостинге) и создал таблицу для новостей следующим SQL:

 CREATE TABLE `news` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`url` VARCHAR( 100 ) NULL ,
`title` VARCHAR( 255 ) NOT NULL ,
`body` TEXT NOT NULL
) ENGINE = MYISAM

ALTER TABLE `news` ADD UNIQUE(`url`)


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

INSERT  INTO `news` (`id`, `url`, `title`, `body`) VALUES (NULL,  'my-super-news1', 'Тестовая новость 1', 'текст новости 1 текст новости 1  текст новости 1 текст новости 1 текст новости 1 текст новости 1 '),  (NULL, 'super-puper-news2', 'Тестовая новость 2', 'текст новости 2 текст  новости 2 ');


Идея в следующем: пользователь который заходит по ссылке www.mysite.ru/news/my-super-news/ - получает на экране текст первой новости, а если зайдет на www.mysite.ru/news/super-puper-news2 тогда получает текст второй.

Создаем модель (models/News.php) для работы с нашей таблицей новостей:

<?php
class News extends CActiveRecord
{
   public static function model($className=__CLASS__)
   {
       return parent::model($className);
   }
   public function tableName()
   {
       return 'news';
   }
}

Модернизируем наш контроллер под работу с базой (controllers/HelloController.php)

<?php
class HelloController extends CController
{
  public function actionWorld()
  {
      echo 'Привет от HelloController->actionWorld()';
  }
  public function actionStepan()
  {
      echo 'Привет Степан!';
  }
  public function actionDima()
  {
      echo 'Привет Дима!';
  }
  public function actionIvan()
  {
      echo 'Привет Иван!';
  }  
  public function actionNews()
  {
        // если хотите, то $_GET['news_name'] можете обработать
        // предварительно всякими функциями для безопасноти
     $url = $_GET['news_name'];
     // проверяем есть ли новость с таким url
     if ($news = News::model()->findByAttributes(array('url' => $url))) {
         // получается мы нашли в базе запись
         // в которой значение url равняется переменной news_name
         echo $news->title ,  '<br>' , $news->body;
     } else {
         // нет такой новости, об этом и сообщаем:
       echo 'новость не существует!';
     }
  }
}

Вот и все. Заходите по тестовым ссылкам выше и наслаждайтесь работой.
Если даже после примера остались вопросы - рекомендую перечитать урок по работе с моделью.



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

  1. Рамки MVC весьма размыты, поэтому моё понимание может не совпадать с полученными вами ранее знаниями. Хотел бы напомнить что ... "Шаг 3 : Что такое MVC?"

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

  3. Эта статья устарела т.к. была написана для yii версии 1.0.х; Если вы используете более новую версию - у вас могут ... "Настройка 3d капчи на Yii"

[adm] zolter

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

Рендер отображений в статье не используется специально. :)

[guest] Maxx

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

Спасибо, давно сам сделал :)

[guest] zolter

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

Ваши голоса за статью - стимулируют написание новых!

[guest] Гость

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

голосую! :)

[guest] Султан

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

Шаг 6 будет?

Кстати, вчера у Вас сайт полег! Логин и пароль был на показ, надеюсь, что yii не выдает пароль и логин по умолчанию, при ошибке к подключению к базе?

[guest] sidan_root

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

Султан, где вы пароль увидели? Zolter@localhost?
Пароль не выдается ни при каких обстоятельствах.

[guest] Гость

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

Спасибо Большое! Будет следующий шаг или все?

[guest] zolter

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

Ближайшее время начнется новый цикл статей посвещенный моему текущему проекту - модульной CMS системе. По поводу данного материала для новичков - планирую так же постепенно идти дальше.

[guest] Гость

Было сказано: Суббота, 21 Январь 2012

C нетерпение ждем.

[guest] Гость

Было сказано: Суббота, 28 Январь 2012

Пишет "Table "news" does not have a column named "0"."
И не пойму в чем дело(

[guest] Гость

Было сказано: Суббота, 28 Январь 2012

Все разобрался, была синтаксическая ошибка в findByAttributes.
Ждем продолжение статей! как реализуется view?

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


Код:
Имя: