DbHelp.ru
Маленький Yii блог
Комментарии
Гость: site de rencontre turque, rencontre serieuse region centre, madame bovary rencontre entre charles et...
Гость: rencontre femme juive marseille, rencontre jurassic adultere, site de rencontre algГ©riens en france...
Гость: online amoxil, amoxil dosage chart buy cheap amoxil, amoxil online https://amoxil.ooo/
Гость: rencontre pau, rencontre femme marocaine marrakech, rencontre amoureuse pour ado de 12 ans, rencontr...
Гость: rencontre par telephone mobile, resultat rencontre saint hubert, rencontres abcoeur, annonce rencont...



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

Урок 3 : Первый раз, первый контроллер..

Рубрика: Создаем блог вместе

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

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

Эта статья устарела т.к. была написана для yii версии 1.0.х; Если вы используете более новую версию - у вас могут возникнуть ошибки из-за несовместимости. Обычно ответы на все вопросы работы на 1.1.х были описаны в комментариях ниже статьи.

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

---

Хочу вам сразу сказать что мои уроки никак не пересекаются с "Blog Tutorial".
Я использую свои решения (свой подход) и не собираюсь дублировать идеи. Спасибо всем моим читателям которые натолкнули меня пересмотреть вердикт относительна данного раздела.

Я предполагаю что вы уже знакомы с:

Кодим, кодим, перекодим...

Со времён "Урока 2" мои взгляды немного изменились и я решил пересмотреть структуру одной из таблиц. Если вы следовали уроку и создавали все таблицы в базе, выполните следующие действия:

  1. воспользуйтесь phpmyadmin что бы открыть вашу базу.
  2. найдите и удалите там таблицу category
  3. используя SQL выполните следующий код:

CREATE TABLE `category` (
  `id` int(11) NOT NULL auto_increment,
  `idOwner` int(11) NOT NULL default '0',
  `name` varchar(250) NOT NULL,
  `url` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;

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

id - порядковый номер категории
idOwner - номер родительской категории (номер категории в которой находится категория)
name - название категории
url - префикс URL для категории


Объяснение почему я выбрал данный тип дерева, а не NestedSets - выходят за приделы данного урока. В двух словах я хочу сказать что я сторонник простоты и для меня перестраивать ключи всего дерева только что б вставить в него элемент - чуждо (как это происходит с NestedSets). Если вы не согласны с моим подходом в данном случае - вы можете использовать любое другое дерево.

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

id | idOwner | name
1           0              Главный
2           1              Раздел 1
3           1              Раздел 2
4           1              Раздел 3
5           2              Раздел 1.1
6           3              Раздел 2.1

Пример как это будет выглядеть:
 
 | Главный
 |--- Раздел 1
 |------- Раздел 1.1
 |--- Раздел 2
 |------- Раздел 2.1
 |--- Раздел 3

Так, думаю с деревом все понятно. Переходим дальше...

Первый раз, первый контроллер...

Стандартный контроллер для Yii приложения - Site, но если вы внимательно смотрели строчки нашего конфиг файла (protected/config/main.php) вы должны были заметить :

    'defaultController'=>'post',

данная строка говорит о том что вместо "Site" нашим контроллером по умолчанию будет Post. Также в файле protected/config/main.php удалите строчки которые нам сейчас не нужны:

    'sourceLanguage' => 'en',
    'language' => 'ru',
    'theme' => 'classic',

Давайте сразу договоримся что файлы блога который мы с вами создаем вы разместили у себя на localhost. Поэтому что бы открыть первую страницу блога - в браузере вы пишите http://localhost/

Рядом с папкой protected создайте папку assets. (она нам понадобиться в будущем)

Если вы сейчас зайдете на свой блог, вы должны увидить ошибку что контроллера Post не найдено или страница не найдена (смотреть).

Войдите в protected/controllers/ и создайте файл PostController.php

<?php
    class PostController extends CController
    {          
        public function actionIndex()
        {
            $this->pageTitle = "Мой блог :: Главная страница";
           
            // создаем простой критерий поиска в котором
            // просто сортируем по колонке created
            $criteria=new CDbCriteria;
            $criteria->order = 'created DESC';
           
            // Обращаемся к моделе Posts (которую мы создадим немного позже)
            // И передаем нашу критерию, чтобы все сообщения которые
            // мы получим - были отсортированы по дате создания.
            $all_posts = Posts::model()->findAll($criteria);
           
            // Передаем переменную $all_post со всеми постами в отображение index
            // в самом отображении переменная будет доступна по имени $posts
            $this->render('index', array(
                'posts' => $all_posts,
            ));
        }
    }

Думаю комментариев будет достаточно что бы понять как это дело работает. Сохраните контроллер и запустите блог. Вы должны увидеть ошибку что Posts.php не найден (смотреть). В принципе это и не удивительно (если вы читали комментарии), нам надо создать модель Posts.

Войдите в protected/models/ и создайте файл Posts.php:

<?php
    // Стандартный шаблон для любой модели.
    class Posts extends CActiveRecord
    {       
        public static function model($className=__CLASS__)
        {
            return parent::model($className);
        }
        public function tableName()
        {
            return 'post';   // название нашей таблицы в базе данных
        }
    }

Теперь заходите к себе на блог и смотрите что увидим на этот раз :) В идеальном варианте мы должны увидить ошибку (смотреть) что не найдено отображение index.php в которое мы собственно передаем переменную $all_posts. (смотреть)

Если вы видите ошибку связанную с базой данных (смотреть) тогда вы просто забыли в файле config/main.php поменять настройки соединения с базой данных.

Теперь перейдем к созданию простого отображения (index.php) которое выведет на экран нам список всех постов из базы.

Заходим в protected/views/ создаем там папку post,
а теперь в этой папке создаем два файла

index.php:

<table border="0" width="100%" cellpadding="10" cellspacing="10">
    <?php
    if (!empty($posts))
        foreach ($posts as $key => $val) {
            $this->renderPartial('_list',array(
                'post'=>$val,
            ));
        }
    ?>
</table>

_list.php:

<tr><td>
    <table border="1" width="100%">
        <tr><td><h2>Название : <?=$post->name;?></h2>
        <tr><td><?php echo $post->created;?>
        <tr><td><?php echo mb_substr($post->text, 0, 500), "...";?>
    </table>

В файле index.php мы получаем $posts переменную которая содержит в себе все посты из нашей базы (если они есть), а затем в цикле передает информацию по отдельному посту в отображение _list.php где выводятся все данные.

Я мог бы не разбивать вывод на два файла (оставить всё в index.php), но поверьте мне, данное решение намного изящнее и удобнее. (попробуйте приучить себя к такому стилю программирования и поймете что так намного удобнее).

Теперь нам надо добавить данные о постах в базу данных. Используя phpMyAdmin - войдите в базу данных и в таблицу post по добавляйте каких то тестовых данных (2-3 записи). Если нехотите добавлять вручную - загрузите в базу мой небольшой дамп (смотреть);

Теперь если вы откроете свой блог - вы увидите посты которые у вас в базе (смотреть). Если вы видите белый экран - значит добавить посты в базу вас так и не получилось :)

Теперь давайте модифицируем наш контроллер таким образом  что б появилось постраничное листание.

<?php
    class PostController extends CController
    {          
        public function actionIndex()
        {
            $this->pageTitle = "Мой блог :: Главная страница";
           
            $criteria=new CDbCriteria;
            $criteria->order = 'created DESC';
           
            // Создаем обьект класса CPagination в который
            // передаем кол-во наших постов
            $pages=new CPagination(Posts::model()->count($criteria));
            // Сколько сообщений выводить на страницу?
            $pages->pageSize=1;
            $pages->applyLimit($criteria);
           
            $all_posts = Posts::model()->findAll($criteria);
           
            $this->render('index', array(
                'posts' => $all_posts,
                // теперь нам надо в отображение послать еще
                // и переменную $pages
                'pages' => $pages,
            ));
        }
    }

В $pages->pageSize я установил единицу для того чтобы вы (со своими двумя постами в базе) увидели виджет постраничного листания. Вы можете установить любое другое значение для удобства.

Теперь надо добавить виджит постраничного листания в отображение

<?php $this->widget('CLinkPager',array(
            'pages'=>$pages,
            'maxButtonCount' => 5, // максимальное вол-ко кнопок <- 1..2..3..4..5 ->
             'header' => '<b>Перейти к странице:</b><br><br>', // заголовок над листалкой
    )); ?>

(добавьте этот код конец файла view/post/index.php)

Вот в принципе и всё для сегодняшнего урока. Если вы войдете на страницу своего блога - вы увидите одно несчастное сообщение и элемент для листания страниц.

Мне кажется для первого практического занятия по данному уроку - материала я изложил достаточно.

В следующий раз будет два парных урока по темам:

  1. Как прикрутить регистрацию (авторизацию) средствами Yii
  2. Как создать отдельную страницу для поста


Спасибо всем что читаете мой блог.
Заходите еще!



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

  1. Александр Макаров вместе с Алексеем Лукьяненко завершили первоначальный перевод «Руководства по созданию блога» на PHP-фреймворке Yii. next Заходим и читаем [рус.]   ... "Перевод: Руководство по созданию блога на Yii"

  2. Хотел бы поддержать традицию с прошлой версии фреймворка и немного поговорить про 1.0.7. Как вы понимаете до выхода новой версии ... "Что нас ждет в 1.0.7?"

  3. Я думаю, всем нам в жизни приходилось слышать такое слово как «фреймворк». Многие из вас действительно вникли в саму ... "Шаг 1: Что такое фреймворк?"

[guest] xoma

Было сказано: Пятница, 22 Май 2009

Ну наконец-то продолжение появилось! Спасибо!
Позаимствую идею с _list.php для записей!

[guest] aser

Было сказано: Пятница, 22 Май 2009

Очень хорошо что расписан процесс ручного создания контроллера и модели, но как по мне нужно было упомянуть что половину статьи можно создать из yiic shell-a двумя командами ;) как для меня это и есть большой + данного framework-а.

[adm] zolter

Было сказано: Пятница, 22 Май 2009

независимо от того будет написан контроллер и его функционал в ручную или созданный при помощи yiic - все равно его надо понимать что бы потом модфицировать. именно поэтому я расписываю ручное создание контроллеров и моделей что бы люди понимали откуда они взялись и в случае утери yiic - могли создать их в ручную :) А для тех кто в будущем соберается использовать не только yii - это бесценный опыт т.к. восновном вся эта фигня одинакова во всех фреймворках без автогенерирования кода =)

[guest] Максим

Было сказано: Суббота, 23 Май 2009

Хорошая статья, жду продолжения

[guest] Вячеслав

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

Замечательная статья.

Чуть не в тему:
В index.php и _list.php не используются закрывающие теги </td></tr>.
Сознательно?

[adm] zolter

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

Да, не закрываю их сознательно. Тег td сам закрывается перед открытием следующего тега td. Аналогично и с tr, т.е. закрывать их не обязательно, html сам это делает. Для XHTML мои способ написания не подойдет, т.к. он предполагает что все теги должны быть закрыты, а для простого html - данный подход многие используют для быстроты написания :)

[guest] Вячеслав

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

Понятно! :)
Спасибо за блог, зарегистрировался и подписался на RSS!
Тимур, есть предложения:
1. Добавь на блог форму обратной связи (а если хочется тебе сказать что-то хорошее лично? :).
2. твой 125 комментарий не привязан к статьям.
3. добавь блок контекстной рекламы - я первый кто покликаю на нем (заодно повод для статьи)
4. после чтения твоего блога возникло желание разобраться с Yii. Хотелось что-то типа Hello World. После долгих поисков нашел это приложение в дистрибутиве :-). Разобрался с работай и написал небольшую статейку. Хочу отдать тебе ее безвозмездно. Может кому пригодится.

[adm] zolter

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

Привет :)
Спасибо за хорошие отзывы :) Форму обратной связи думаю на днях добавлю, вдруг кто захочет что то хорошее написать ) По поводу хелло-ворлд можешь тут прочитать (http://dbhelp.ru/yii-create-project/page/) я тоже немного писал. Статейку с радостью приму и опубликую под твоим авторством. Кидай на zolter.od@gmail.com :) Заходи еще )

[guest] Гость

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

Спасибо за статью, а как заменить Previous и Next напрмер на Предыдущая и Следующая

[adm] zolter

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

Замените свой файл framework/messages/ru/yii.php на вот этот файлик http://dbhelp.ru/files/yii.rar

В нем уже частично переведена большая часть Yii элементов в том числе надписи на этих кнопках.

RSol

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

>как заменить Previous и Next напрмер на Предыдущая и Следующая

Я сделал так (views/post/list.php):
$this->widget('CLinkPager',array('pages'=>$pages,'nextPageLabel'=>'Вперед >','prevPageLabel'=>'< Назад'));

[guest] Гость

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

не понятно, но не работает
я и в самое приложение protected/messages подлаживал и в конфигурационном фале добавил
'sourceLanguage'=>'ru_ru',
'language'=>'ru_ru',

[adm] zolter

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

Попробуйте сделать так как предложил RSol

[guest] Гость

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

Да, действительно второй вариант рабочий.
Спасибо

[adm] zolter

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

Да и первый вариант тоже рабочий :) Просто вы наверно не туда файлик залили или еще что то :)

[guest] ppy

Было сказано: Пятница, 29 Май 2009

> Да, не закрываю их сознательно.

вам не кажется что руки надо отрывать за такое ? : )

[guest] ppy

Было сказано: Пятница, 29 Май 2009

ps. За статью большое спасибо!

[adm] zolter

Было сказано: Пятница, 29 Май 2009

to ppy
почему же ? есть сторонники XHTML, а есть сторонники HTML. Так вот для второго случая - не закрытие этих тегов являеться допустимым, иначе в HTML бы не предусмотрели механизм их автоматического закрытия :) Тоже самое спорный вопрос надо ли писать <img ... /> или достаточно просто <img>. Тут как говориться на вкус и цвет, мне XHtml до лампочки, но я своё отношение к нему некому не навязываю :) А руки отрывать надо за код вида:

foreach ($array as $variable) {
$i++;
echo $array[$i];
}


:D

[guest] Гость Начинающий yii

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

21 мая 2009
>>поэтому теперь каждый новый урок будет
>> выходить как минимум раз в неделю...

1 июня...


Инициатива дело хорошее. Похвальное и не каждому доступное.

Но аудиторию лучше держать, чем постоянно ее брать по новой.
:)

[adm] zolter

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

Согласен.
К сожалению не всегда получается со временем. Статья почти готова, просто остался небольшой рерайт.

[guest] Ponf

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

Есть небольшая проблема с mb_substr(), когда обрезается текст почему-то вставляется �, выглядит примерно так:
те�...
пробовал mb_strcut, то же самое(

[guest] Гость

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

Пробуйте обрезать на чётное кол-во символов.
Не на 3, 5, 7 к примеру а не 2, 4, 6

[guest] Ponf

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

mb_substr($post->text, 0, 499)

и
mb_substr($post->text, 0, 500)

дают одинаковый результат(
где-то один байт теряется(

[guest] Гость

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

Попробуйте третим параметром принудительно указать кодировку utf8

[guest] Ponf

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

сработало)
Благодарю за помощь

[guest] Гость

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

пожалуйста)

[guest] Гость

Было сказано: Суббота, 20 Июнь 2009

Не хорошо называть поле в базе данных idOwner.
Это parent_id или еще как угодно, но это Родитель а не владелец, и это не придирки, просто idOwner это id пользователя или владельца - т.е. подчеркивает отношения. А в Вашем примере это Родитель - потомок.

[guest] Макс

Было сказано: Суббота, 20 Июнь 2009

В принципе это кому как нравиться и кто на это как смотрит. Есть много документации по проектированию и в некоторых из них выносят слово id вперед для показания что речь идет про связьку или счетчик. И данный подход весьма удобен для баз где используются большие поля или имена полей.

[guest] Гость

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

"Теперь заходите к себе на блог и смотрите что увидим на этот раз :) В идеальном варианте мы должны увидить ошибку (смотреть) что не найдено отображение index.php в которое мы собственно передаем переменную $all_posts. (смотреть)" --- а почему у меня после этого пункта выдает вообще левую ошибку? вот скрин http://i061.radikal.ru/0906/15/86b251ea92d0.jpg

[adm] zolter

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

Оо.. Мне жаль но у вас хостинг без поддержки PDO. Оно необходимо для работы с базой данных. Есть несколько вариантов решения этой проблемы:

1. Использовать платный хостинг (почти все они с поддержкой PDO Mysql)

2. Попробовать настроить вот этот компонент для эмуляции PDO http://dbhelp.ru/install-yii-phppdo/page/

[guest] Гость

Было сказано: Суббота, 27 Июнь 2009

Проблемы с подключением модели.
Выдаёться постоянно ошибка "Posts.php не найден"
хотя файл загружен в protected/models

Я может ошибаюсь но модели должны както подключаться в конфиге?

Увидал в примерах:

	'import'=>array(
'application.models.*',
'application.components.*',
),


Но при этом коде Апачь выдаёт ошибку и получаю:
Під час завантаження сторінки з’єднання з сервером було скинуто.

В качестве тестового сервера использую XAMP под Win XP.

[guest] Maxx

Было сказано: Суббота, 27 Июнь 2009

А вы уверены что файл Posts.php находиться в папке models и нормально открывается в текстовом редакторе? Ваш конфиг файл правильный, должно работать..

[guest] Гость

Было сказано: Суббота, 27 Июнь 2009

Та вот и беда что уверен, видать кривой XAMP.
Ладно если конфиг файл правильный то буду пробовать другие сервера.

[guest] zolter

Было сказано: Суббота, 27 Июнь 2009

Попробуйте ZendServer поставить.
Под виндой я на нем точно поднимал Yii и всё работало отлично

[adm] zolter

Было сказано: Суббота, 27 Июнь 2009

По поводу подключения моделей в конфиге:
вам самому ничего подключать ненадо. Yii динамически сам загружает все классы автоматически (в том числе моделей) в тот момент когда вы первый раз к ним обращаетесь. Поэтому в самом конфиге достаточно строчки "'application.models.*'," которая говорит о том что классы которые надо подключать находятся в папке models.

В конце урока (http://www.dbhelp.ru/blog-setup/page/) вы можете скачать архив исходников скелета приложения на Yii. Там также будет уже рабочий конфиг в принципе. Попробуйте именно его использовать

[guest] Гость

Было сказано: Суббота, 27 Июнь 2009

Я поставил последнюю версию XAMP с сайта и всё заработало.
Вы бы добавили строчку подключения модулей в листинг конфига Урока 2.
Может ещё кому пригодиться)

[guest] zolter

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

Да, спасибо.
На днях немного обновлю статью =)

[guest] Ensiferum

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

Почему может быть такое? Пишу в main.php

'db'=>array(
'class'=>'system.db.CDbConnection',
'connectionString'=>'mysql:host=localhost;dbname=yii',
'username'=>'root',
'password'=>'',
'charset'=>'utf8',
)

выдает
CDbConnection failed to open the DB connection: could not find driver

Данные для коннекта правильные

[adm] zolter

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


<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password")
or die("Could not connect: " . mysql_error());
print ("Connected successfully");
mysql_close($link);
?>


попробуйте этот код вставить в php файл и запустить. это для того чтобы точно отсечь предчасность yii к этой ошибке. я предполагаю что у вас не настроена поддержка mysql в php.ini (как вариант), или mysql просто не запустился в системе.

[guest] tenzor

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

может просто не установлен mysql дврайвер для PDO?

[adm] zolter

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

Не. Обычно в этом случае оно ругается что не может найти PDO.php или чтото в этом духе.

[guest] Гость

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

Не работает из четвертого урока при переходе на http://localhost/view/?url=test, хотя я делал все так же как написано.

[guest] zolter

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

там давалась ссылка на http://yii.dbhelp.ru/step/?n=6) , вместо неё перейдите на ссылку http://yii.dbhelp.ru/step/?n=6 (т.е. без скобки в конце). дальше загрузите эти данные к себе в базу.

если кодировка на странице будет неправильная - установите в ручную на utf-8

Виталий

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

А есть аналог метода mb_substr()? Только чтобы не по буквам, а по словам или абзацам разбивался текст. Ну или как технически/практически/идеологически правильно делать анонсы статей/новостей?

[adm] zolter

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

Я бы делал так:

$str_array = explode(" ", $text);

что бы разбить по словам.

[guest] Гость

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

позновательно :) спасибо

[guest] like2dev

Было сказано: Суббота, 20 Март 2010

$pages->pageSize = количество элементов на одной странице
заменить на
$pages->setPageSize(1);

[guest] Гость

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

otlichno spasibo za statya

[guest] Гость

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

я новичок в yii. в файле main.php нет
'defaultController'=>'post',
Как быть?

[guest] Гость

Было сказано: Суббота, 15 Май 2010

Добавить )

[guest] Тимур

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

СПАСИБО! Доходчиво и красиво!

[guest] Гость

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

// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
),

'defaultController'=>'post',

// application components
'components'=>array(
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
),

[guest] Dmitry

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

Подскажите, где изменить стили для паджинатора? Мне хочется сделать его поменьше

[guest] zolter

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

При вызове виджета ЦЛинкПэйджер укажите парраметром "cssFile" путь к вашему css файлу и он подхватит все ваши стили для оформления листалки

[guest] Гость

Было сказано: Среда, 02 Март 2011

Спасибо за интересные статьи, это мое первое знакомство с Yii.

[guest] Гость

Было сказано: Суббота, 26 Март 2011

блин немогу сделать, дошол до _list.php щас уже свю писанину стер и скапиров все когды отсюда, всераво неработает выводит:

Property "PostController.breadcrumbs" is not defined.

/var/www/testdrive/protected/views/layouts/main.php(41)
чё это может быть?

[guest] Гость

Было сказано: Суббота, 26 Март 2011

все нашол как исправить за место

render()
использовал
renderPartial()
в контролере, по другому просто неполучается, надеюсь так оно и надобыло сделать

[guest] Гость

Было сказано: Понедельник, 28 Март 2011

Property "PostController.breadcrumbs" is not defined.

/var/www/testdrive/protected/views/layouts/main.php(41)
чё это может быть?


нет свойства breadcrumbs

видимо ты наследуешь PostController от CController,
загляни в файл aplications/components/Controller.php
и увидишь public $breadcrumbs=array();

-------
решение просто
class PostController extends Controller


з.ы. добавьте BB-коды)

[guest] Larein

Было сказано: Понедельник, 28 Март 2011

забыл:
renderPartial() и render()
отличаются тем что первый не использует макет в отличии от второго. поэтому этим решать не стоит)

изучаю Yii 5-ый день, автору спасибо за блог, нашел необходимую информацию)

[guest] DEM

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

У меня проблемка(((
При отображении блога (из вашего урока), то что берётся из БД выводится нормальным русским текстом, а то, что писал сам в коде (к примеру в виджете страниц ВПЕРЁД, НАЗАД или "Название" в _list.php) он выводит просто квадратики (���). Как это можно решить? в .htaccess стоит "AddDefaultCharset UTF-8" (если убрать, то весь сайт будет в крякозябрах :( )

[guest] Гость

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

>>DEM
Посмотри в конфигурационном файле php настройки кодировки - default charset = ?. У меня та же проблема была - там стояло не UTF-8, а windows-1251...

[guest] ApXaHgheJI

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

Золтер спасибо за статью - буду сейчас смотреть все разом!
Просьба - когда используешь - applyLimit ( хоть бы сказал что это такое и зачем ) просто я как его увидел полез на офф сайт и искать в доках и так ничего и не нашел =(

П.С. еще раз спс - все пересмотрю - и то что ты делаешь не через шелл +5 - согласен люди должны понимать что зачем и куда...

[guest] Гость

Было сказано: Четверг, 15 Декабрь 2011

Виджет не отображается. В чём может быть проблема?

[guest] zolter

Было сказано: Четверг, 15 Декабрь 2011

Какой? Листалка?

[guest] Гость

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

да, листалка

[guest] zolter

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

А ты уверен что кол-во постов которое ты тянешь с базы больше чем твое значение указанное в $pages->pageSize?? Если постов хватает только на одну страницу - листалка не будет отображатся т.к. нечего листать

[guest] Kasper

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

Всем привет! Прошу помощи, застрял( а хочется двигаться дальше( в */protected/controllers/ создал файл PostController.php сохранил контроллер - запускаю блог и вижу не текст с Posts.php а эту ошибку

CException

PostController cannot find the requested view "index".

[guest] zolter

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

Добрый день, ошибка говорит что вы не создали файл отображения.
Скорее всего в actionIndex идет $this->render('index'), а вот сам файлик protected/views/post/index.php у вас не создан. Перечитайте еще раз статью и успехов :)

[guest] Casper

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

Thank you very much zolter! У меня получилось!)))

[guest] Гость

Было сказано: Вторник, 24 Январь 2012

Добрый день.
У меня следующая проблема:
Переменная posts, которую требуется вывести в представление
имеет угрожающий вид (через print_r), т.е. помимо необходимых данных, там еще куча всего. Весь код не стану приводить(очень много).
Начало:


Array
(
[0] => Posts Object
(
[_md:CActiveRecord:private] => CActiveRecordMetaData Object
(
[tableSchema] => CMysqlTableSchema Object
(
[schemaName] =>
[name] => post
[rawName] => `post`
[primaryKey] => id
[sequenceName] =>
[foreignKeys] => Array
(
)

Нужные мне данные:

[_new:CActiveRecord:private] =>
[_attributes:CActiveRecord:private] => Array
(
[id] => 2
[id_user] => 0
[id_category] => 0
[name] => ERe
[url] => http://www.google.ru/
[text] => frgafgfgafrg
[active] => 1
[created] => 2012-01-18 00:00:00
)

В чем проблема.
Заранне спасибо.

[guest] zolter

Было сказано: Вторник, 24 Январь 2012

Проблемы нет! Твоя переменная это выборка с модели функцией findAll. Следуя этого ты в переменную и получаешь МАССИВ объектов результата. Тебе конечно надо было показать запрос, но я так предполагаю что ты хотел получить одну запись. Тогда findAll меняешь на find. И в результате с $posts можна работать как $posts->url ; $posts->text и тп.

Если всетаки тебе надо получить много значений через findAll, тогда работай с переменной как $posts[1]->text. Либо через
foreach ($posts as $val)
{
$val->text;
}

п.с. еще вариант получить в принтовке все данные это обратится к attributes. Т.е. можешь сделать print_r($posts->attributes) в случае с find, и print_r($posts[$num]->attributes) в случае с findAll

[guest] Гость

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

Спасибо помогло.
З.Ы. Очень понравилась методика подачи материала.

[guest] ПринцГосплана

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

Божественно

[guest] Гость

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

В коментах было:
'language'=>'ru_ru',

надо:
'language'=>'ru',

[guest] Sodu

Было сказано: Суббота, 29 Июнь 2013

я сейчас изучаю Yii 1.1 (знаю что эти посты для 1.0), перехожу с друпала, любители yii извините конечно, но после друпала фреймворк кажется убогим, но что хотелось сказать, так это то что походу 1.0 был более понятный что ли с точки зрения нужно было многое делать "руками". На Yii все почти сразу есть но с первого раза не понятно что и где.

Fenix

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

Добрый день. Возможно немного не в ту тему пишу, но строго не судите...
Подскажи пожалуйста
можно ли создать постраничную навигацию используя не базу данных, а массив.
CLinkPager прикурутил, но на каждой странице весь массив
а

$pages->applyLimit($criteria)
не получается правильно прикрутить из CDbCriteria.
Заранее спасибо.

Fenix

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

Эх поспешил, сам нашел решение хоть и чуть костыльное)если кому нид напишите, может пригодится.
Автору огромное спасибо за сайт очень нравится, особенно дизайн)

[guest] Mj

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

Здравствуйте! Есть вопрос. У меня в постраничне навигации ссылки указываютя ввиде:

site.ru/post/index?page=2


А можно сделать так:
site.ru/post/index/page/2


urlManager настроено. То есть если аддресс указать вручную ввиде site.ru/post/index/page/2 страница отображается (работает без ошибок).

[guest] Mj

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

Добавте оповещание по email

[guest] Гость

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

guest test post
<a href="http://googlee.te/">bbcode</a>
<a href="http://googlee.te/">html</a>
http://googlee.te/ simple

[guest] Гость

Было сказано: Понедельник, 06 Февраль 2017

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > www.like.zarplatt.ru <

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

[guest] Гость

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

guest test post
<a href="http://googlee.te/">bbcode</a>
<a href="http://googlee.te/">html</a>
http://googlee.te/ simple

[guest] Гость

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

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. > like-rabota.tk <

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

[guest] Гость

Было сказано: Среда, 15 Март 2017

Пройдите 1 регистрацию, сделайте 2 действия
и получайте от 8950 рублей каждые сутки в автоматическом режиме.

Мы гарантируем:
- Первый заработок в течении 60 минут.
- Стабильный доход 24 часа в сутки.
- Поступление денег без задержек.
- Для России, стран СНГ и Европы.
- Без вложений и установки ПО.
- Специально для новичков и людей без опыта.

Ознакомтесь с условиями на нашем сайте. ( http://prosto.zarplatt.ru/ )

[guest] Гость

Было сказано: Четверг, 23 Март 2017

Владелец http://healbio.ru/ лох.

[guest] Гость

Было сказано: Суббота, 01 Апрель 2017

Мы предлагаем вам стабильный доход с ежедневными выплатами!

Наш сервис работает автономно, независимо от того, включен у вас компьютер или нет.

Сервис не берет никаких ежемесячных платежей. Вы пользуетесь учетной записью АБСОЛЮТНО БЕСПЛАТНО.

Сервисом можно пользоваться с любого устройства:
ПК, ноутбук, планшет, смартфон.

Ознакомьтесь с нашим предложением и пройдите регистрацию у нас на сайте. ( www.moneygrup.tk )
(Активация кабинета ПОЛНОСТЬЮ АВТОМАТИЧЕСКАЯ и занимает около 20 секунд)

[guest] Гость

Было сказано: Суббота, 01 Апрель 2017

Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline-online»

Крупнейшая международная компания по продаже А/В билетов
срочно набирает сотрудников на постоянную основу для несложной
работы через интернет, с ежедневными выплатами от 11 000 руб.

Работая в нашей компании Вы получаете:

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

Пройдите регистрацию у нас на сайте. > airline.zarplatt(точка)ru <

Без вложений, опыт и профессиональные навыки не требуются!

[guest] Гость

Было сказано: Понедельник, 03 Апрель 2017

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > www.like-rabota.tk <

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

[guest] Гость

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

Предлагаем Вам работу без вложений, на системе автоматического приёма и обработки заказов.

Мы предоставляем:

- Наш лицезионный софт.
- документы со всей необходимой доп. информацией.
- постоянная техническая поддержка.

Оплата от 5500 в день. Выплаты ежедневно.

Более подробная информация на нашем сайте >> obrabotka.zarplatt.ru <<

[guest] Гость

Было сказано: Среда, 10 Май 2017

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > www.oplata-vklike.tk <

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

[guest] Гость

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

21 way to lose weight quickly:
https://sites.google.com/site/weightlossluxury/la-weight-loss-programs-diet-plans---effective-and-affordable


Interesting queries:
things to eat to lose weight and gain muscle
how to lose weight fast for mens
heart rate for cardio weight loss
miley cyrus weight loss 2013
riding an exercise bike for weight loss
aerobic dance workout to lose weight
calories to eat in order to lose weight
topamax zoloft weight loss
fasting headache weight loss dehydration

[guest] Гость

Было сказано: Четверг, 17 Май 2018

Купить кухню под заказ Пушкинский

http://kuhninazakaz.info/page/kupit-kuhnyu-pod-zakaz-pushkinskij/
.

[guest] Гость

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

такси люберцы красная горка домодедово

http://taxi-vovrema.info/page/taksi-lyubertsi-krasnaya-gorka-domodedovo/
.

[guest] Гость

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

Автоюрист в обнинске адрес

http://avtouris.info/page/avtoyurist-v-obninske-adres/
.

[guest] Гость

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

Когда начать лечение хронического гепатита в


http://gepatitu-c.net/page/kogda-nachat-lechenie-hronicheskogo-gepatita-v/

.

[guest] Гость

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

Заказ автобусов в одинцово недорого

http://abba-trans.com/page/zakaz-avtobusov-v-odintsovo-nedorogo/
.

[guest] Гость

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

slots games <a href="https://freeslots4k.com/">hollywood casino free slots</a> scatter slots <a href="https://freeslots4k.com/">free slots games</a> | https://freeslots4k.com/ - myvegas slots https://freeslots4k.com/ - slots for free

[guest] Гость

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

slots free games <a href="https://freeslots4k.com/">house of fun free slots</a> goldfish slots <a href="https://freeslots4k.com/">goldfish slots</a> | https://freeslots4k.com/ - free online slots https://freeslots4k.com/ - casino slots free

[guest] Гость

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

hollywood casino online slots free <a href="https://slotsonline.fun/">casino slots free</a> play free slots <a href="https://slotsonline.fun/">heart of vegas free slots</a> | https://slotsonline.fun/ - slots games https://slotsonline.fun/ - quick hit slots

[guest] Гость

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

plainridge casino <a href="https://onlinecasinoplay24.us.org/">vegas casino online</a> prairie meadows casino <a href="https://onlinecasinoplay24.us.org/">doubleu casino on facebook</a> | https://onlinecasinoplay24.us.org/ - san manuel casino https://onlinecasinoplay24.us.org/ - caesar casino online slot games

Перейти к странице:

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


Код:
Имя: