Yii Framework Forum: Блог. Разбор примера - Yii Framework Forum

Jump to content

  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

Блог. Разбор примера Rate Topic: -----

#1 User is offline   anton4ept 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 16
  • Joined: 24-January 09

Posted 10 February 2009 - 02:55 PM

Попробовал блог запустить.

1) В конфиге приложения надо прописывать базу данных.
2) Нужно создавать базу данных (в папке yii/demos/blog/protected/data ) лежит sql соответствующий.
Но нашлась одна проблема: кириллицу не любит.
Вроде нашел проблему. Кроется она в этом коде моделей Comment и Post:

	protected function beforeValidate($on)
{
$parser=new CMarkdownParser;
$this->contentDisplay=$parser->safeTransform($this->content);
if($this->isNewRecord)
{
$this->createTime=$this->updateTime=time();
$this->authorId=Yii::app()->user->id;
}
else
$this->updateTime=time();
return true;
}

Но и убирать эту строчку
$this->contentDisplay=$parser>safeTransform($this->content);

нельзя.
Что делать? Как заставить правильно работать с кириллицей?
p.s.
базы в utf-8

0

#2 User is offline   multif 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 04-February 09

Posted 10 February 2009 - 03:39 PM

А в чем не любовь-то выражается?

Если использовать SQLlite, которая уже настроена по умолчанию, то все работает на ура, т.е. вообще ничего дополнительно делать не нужно, кроме включения pdo в php.ini. Если хотите прикрутить к mysql, то проблема должна быть исключительно в настройках базы. Код здесь ни при чем. У меня на mysql все завелось также с полпинка.
0

#3 User is offline   anton4ept 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 16
  • Joined: 24-January 09

Posted 10 February 2009 - 10:43 PM

Quote

А в чем не любовь-то выражается?



Если использовать SQLlite, которая уже настроена по умолчанию, то все работает на ура, т.е. вообще ничего дополнительно делать не нужно, кроме включения pdo в php.ini. Если хотите прикрутить к mysql, то проблема должна быть исключительно в настройках базы. Код здесь ни при чем. У меня на mysql все завелось также с полпинка.

А у меня - нет.
В базе (таблица Post) хранятся два значения:
1) Необработанное ( $this->content)
2) Обработанное safeTransform() ($this->сontentDisplay)
Если исправить view'ы и поставить вместо $this->сontentDisplay, $thos->content, то все пучком.

Если сравнить значения $this->сontentDisplay и $this->content в базе, видно, что после обработки $this->сontentDisplay - куда-то удаляются русские символы и добавляется обрамляющий <p></p>

И еще... Если напрямую в базу прописать кириллицу, все отлично отображает.
И заголовки нормально отображает... О, кстати.
0

#4 User is offline   Gordienko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 25
  • Joined: 01-February 09
  • Location:Russia-63-Togliatti

Posted 11 February 2009 - 03:03 AM

Странно как-то... А какая кодировка в системе по умолчанию?
Попробуй после соединения с базой отправить запрос SET NAMES utf8, может быть получится... у меня это решало проблему крякозябров ( хотя и в системе и в БД использовалась одна и та же кодировка).
0

#5 User is offline   multif 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 04-February 09

Posted 11 February 2009 - 06:17 AM

Quote

Если сравнить значения $this->сontentDisplay и $this->content в базе, видно, что после обработки $this->сontentDisplay - куда-то удаляются русские символы и добавляется обрамляющий <p></p>



И еще... Если напрямую в базу прописать кириллицу, все отлично отображает.

И заголовки нормально отображает... О, кстати.


Если поле content содержит данные в UTF-8, а поле contentDisplay нет, то с базой должно быть все окей. С кодом (оригинальным), как говорилось, тоже все все порядке. Скорее всего, ошибка происходит до обработки скриптами данных, получаемых от браузера.

Проверьте настройки кодировки браузера для страницы. Возможно, то, что он отправляет в форме, вырезается при проверке. Кроме того, посмотрите, какие данные и в какой кодировке браузер отправляет на сервер при отправке формы. Тупо выведите весь $post в представлении. В крайнем случае, сделайте все сызнова: обновите бд и скрипты блога.
0

#6 User is offline   anton4ept 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 16
  • Joined: 24-January 09

Posted 11 February 2009 - 08:02 AM

Quote

Если поле content содержит данные в UTF-8, а поле contentDisplay нет, то с базой должно быть все окей. С кодом (оригинальным), как говорилось, тоже все все порядке. Скорее всего, ошибка происходит до обработки скриптами данных, получаемых от браузера.



Проверьте настройки кодировки браузера для страницы. Возможно, то, что он отправляет в форме, вырезается при проверке. Кроме того, посмотрите, какие данные и в какой кодировке браузер отправляет на сервер при отправке формы. Тупо выведите весь $post в представлении. В крайнем случае, сделайте все сызнова: обновите бд и скрипты блога.


Сделал проще:
$parser=new CMarkdownParser;
echo $parser->safeTransform('ЫЫыыыsssssыыыы');

вывело вот что:

Quote

<p>sssss</p>

Похоже, баг... или где-то настройки надо менять.
Или (что очень не понятно) почему-то мой denwer криво работает с utf-8.
0

#7 User is offline   anton4ept 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 16
  • Joined: 24-January 09

Posted 11 February 2009 - 11:02 AM

Хм... на серваке с sqlite - проблем не возникло с кириллицей.
Походу, денвер выпендривается.
Ща попробую еще mysql погонять.


0

#8 User is offline   anton4ept 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 16
  • Joined: 24-January 09

Posted 11 February 2009 - 11:31 AM

Все.. нашел)
Первое, надо прописать в Денвер:\usr\local\mysql5\my.cnf
вот такое чудо:


# ==============================================================
# === БЫЛО === default-character-set = cp1251
# ==============================================================
default-character-set = utf8
character-sets-dir = /usr/local/mysql4/share/charsets

#
# Параметры MySQL-сервера.
#
[mysqld]
# Использовать режим совместимости с клиентами MySQL 3.x и MySQL 4.0.
old-passwords

# Кодировка баз данных по умолчанию.
default-character-set = utf8 # было cp1251
init-connect = "set names utf8" # было cp1251



Второе:
нужно сделать .htaccess с такой строчкой:

Quote

AddDefaultCharset utf-8




0

#9 User is offline   Gordienko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 25
  • Joined: 01-February 09
  • Location:Russia-63-Togliatti

Posted 11 February 2009 - 12:58 PM

либо использовать 1251)))
0

#10 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 14 February 2009 - 09:44 AM

нет! только утф8! Уменьшает количество проблем в разы :)
0

#11 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 15 February 2009 - 08:46 PM

Имхо, можно сделать еще проще:

В конфиге main.php прописать:


...
'db'=>array(
              ...
            'charset'=>'utf8')

0

#12 User is offline   VINil 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 08-March 09
  • Location:Минск

Posted 08 March 2009 - 11:58 AM

Не запускаеться блог блин , пишет YiiBase::include(PDO.php) [<a href='function.YiiBase-include'>function.YiiBase-include</a>]: failed to open stream: No such file or directory

вроде там все поумолчанию должно устанавливаться, или я че то не понял. У меня на винде все и не денвер а собственная подборка (Apach и MySQl )
0

#13 User is offline   xomaa 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 82
  • Joined: 17-January 09

Posted 08 March 2009 - 03:05 PM

а расширение PDO установлено (хотя оно по дефолту должно быть в пятом пхп)??
0

#14 User is offline   VINil 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 08-March 09
  • Location:Минск

Posted 08 March 2009 - 06:41 PM

PDO  было закоменчено, Xomaa: спс )

Мот еще подскажите, я с командной строкой ни как не подружусь у меня локальные проекты лежат на c:/www/_httpdocs/test

как тогда запускать "Запускаем yiic в консоли со следующими параметрами: % YiiRoot/framework/yiic webapp WebRoot/testdrive"

0

#15 User is offline   xomaa 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 82
  • Joined: 17-January 09

Posted 09 March 2009 - 04:38 AM

необходимо перейти в каталог с твоим Yii проектом (который создавался yiic webapp <название твоего проекта>) и оттуда запустить шелл:
<путь к каталогу где установлен сам Yii>/framework/yiic shell

Запускать шелл и все команды необходимо именно из каталога проекта!
0

#16 User is offline   KJedi 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 381
  • Joined: 19-October 08
  • Location:Nikolaev, Ukraine (Europe)

Posted 09 March 2009 - 05:19 AM

Quote

Запускать шелл и все команды необходимо именно из каталога проекта!

Не обязательно, можно просто указывать путь к файлу индекс.пхп твоего проекта. Во всяком случае, в доках написано что можно ;)
0

#17 User is offline   xomaa 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 82
  • Joined: 17-January 09

Posted 09 March 2009 - 06:02 AM

да точно! совсем забыл о такой возможности! ;)
0

#18 User is offline   VINil 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 08-March 09
  • Location:Минск

Posted 09 March 2009 - 10:28 PM

Так у меня запускаеться Батник и ничего не спрашивает, что и куда. И отрабатывает ничего не делая. И я чето не понял какой shell у меня винда же. (извиняюсь конечно за свое ламерство  :) )
0

#19 User is offline   xomaa 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 82
  • Joined: 17-January 09

Posted 10 March 2009 - 01:25 AM

shell - это одна из опций yiic-а, при запуске yiic shell - должно открыться что-то типа командной строки (не командный шелл твоей ОС, а "шел" (подобие) реализованный в Yii), которая может принимать команды Yii или произвольный php-код. Покажи плз, строку как ты все это запускаешь???
CLI установлено?? Еще....php.exe есть в переменной path???
0

#20 User is offline   VINil 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 6
  • Joined: 08-March 09
  • Location:Минск

Posted 10 March 2009 - 07:22 AM

CLI - сорри,  это  ты про cmd.exe? Куда строку писать в CMD ?  запускаю батник энтером
0

Share this topic:


  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users